Data Representation: CSC 321: M&AL

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 65

Data Representation

CSC 321 : M&AL


Microprocessor and Assembly Language

There are 10 kinds of people in the world—those who


understand binary and those who don’t.
Outline
 Introduction
 Numbering Systems
 Binary & Hexadecimal Numbers
 Base Conversions
 Integer Storage Sizes
 Binary and Hexadecimal Addition
 Signed Integers and 2's Complement Notation
 Binary and Hexadecimal subtraction
 Carry and Overflow
Introduction
 Computers only deal with binary data (0s and 1s).
 Many different forms of data:
 Numbers: 2 Types
 Integers: 33, +128, -2827
 Real numbers: 1.33, +9.55609, -6.76E12, +4.33E-03
 Alphanumeric characters (letters, numbers, signs, control
characters): examples: A, a, c, 1 ,3, ", +, Ctrl, Shift, etc.
 Images (still or moving): Usually represented by numbers representing
the Red, Green and Blue (RGB) colors of each pixel in an image,
 Sounds: Numbers representing sound amplitudes sampled at a certain
rate (usually 20kHz).
 So in general we have two major data types that need to be
represented in computers; numbers and characters.
Numbering Systems
Binary Numbers
 Each digit (bit) is either 1 or 0 1 1 1 1 1 1 1 1
 Each bit represents a power of 2 27 26 25 24 23 22 21 20

 Every binary number is a sum of powers of 2

Same concept about


Decimal and
Hexadecimal numbers

Conversions
Rule 1
 Decimal  Any other Base (DIVISION Method) BUT

 Decimal Fraction (Multiplication way)

 Any other Base  Decimal (MULTIPLICATION by


Weights Method) Also

 Other Base Fraction (Multiplication way)

Note: Decimal  Other Base (Single Division Case)


Converting Binary to Decimal
Multiplication
decimal = (dn-1  2n-1) + (dn-2  2n-2) + ... + (d1  21) + (d0  20)
d = binary digit
 binary 10101001 = decimal 169:
(1  27) + (1  25) + (1  23) + (1  20) = 128+32+8+1=169
Convert Unsigned Decimal to Binary
 Division:

least significant bit

most significant bit

stop when
37 = 100101 quotient is zero
Converting from Decimal fractions to
Binary
 Using the multiplication
method to convert the
decimal 0.8125 to binary,
we multiply by the radix 2.
 The first product carries
into the units place.

9
Converting from Decimal fractions to
Binary
 Converting 0.8125 to binary . . .
 You are finished when the
product is zero, or until you
have reached the desired
number of binary places.
 Our result, reading from top
to bottom is:
0.812510 = 0.11012
 This method also works
with any base. Just use the
target radix as the
multiplier. 10
Brain storming?
 Binary number with n-bits can represent how many
unsigned integers?
 Which method will be used for
 Hexadecimal to Decimal
 Decimal to Hexadecimal
 Decimal fraction to Hexadecimal

 Hexadecimal to Binary
Direct conversion is possible
 Binary to Hexadecimal
Hexadecimal Integers
 Binary values are represented in hexadecimal.
Converting Binary to Hexadecimal
 DIRECT COVERSION.
 Example: Translate the binary integer
000101101010011110010100 to hexadecimal

M1023.swf
Converting Binary to Hexadecimal
 Let

x2 n

1+ n Zeros (Binary of x )


 Write n as i + 4 j where 0  i  3

2 + j zeros
i
( Hex of x)
Converting Binary  Decimal
Bit “0”

1010112 => 1 x 20 = 1
1 x 21 = 2
0 x 22 = 0
1 x 23 = 8
0 x 24 = 0
1 x 25 = 32
4310
Converting Hexadecimal  Decimal

ABC16 => C x 160 = 12 x 1 = 12


B x 161 = 11 x 16 = 176
A x 162 = 10 x 256 = 2560
274810
Decimal  Binary
12510 = ?2 2 125
2 62 1

2 31 0
15 1
2
7 1
2
2 3 1

2 1 1
0 1

12510 = 11111012
Decimal  Hexadecimal
123410 = ?16

16 1234
16 77 2

16 4 13 = D
0 4

123410 = 4D216
Hexadecimal  Binary
10AF16 = ?2

1 0 A F

0001 0000 1010 1111

10AF16 = 00010000101011112
Binary  Hexadecimal
10101110112 = ?16

10 1011 1011

2 B B

10101110112 = 2BB16
Exercise – Convert ...

Hexa-
Decimal Binary decimal
33
1110101

1AF

Don’t use a calculator!


Exercise – Convert …
Answer

Hexa-
Decimal Binary decimal
33 100001 21
117 1110101 75
451 111000011 1C3
431 110101111 1AF
Fractions
 Binary to decimal

10.1011 => 1 x 2-4 = 0.0625


1 x 2-3 = 0.125
0 x 2-2 = 0.0
1 x 2-1 = 0.5
0 x 20 = 0.0
1 x 21 = 2.0
2.6875
Fractions
 Decimal to binary
.14579
x 2
3.14579 0.29158
x 2
0.58316
x 2
1.16632
x 2
0.33264
x 2
0.66528
x 2
1.33056
11.001001...
etc.
Exercise – Convert ...

Hexa-
Decimal Binary decimal
29.8
101.1101

C.82
Don’t use a calculator!
Exercise – Convert …
Answer

Hexa-
Decimal Binary decimal
29.8 11101.110011… 1D.CC…
5.8125 101.1101 5.D
3.109375 11.000111 3.1C
12.5078125 1100.10000010 C.82
Integer Storage Sizes
byte 8

word 16
Standard sizes:
doubleword 32

quadword 64

What is the largest unsigned integer that may be stored in 20 bits?


Taxonomy of integers
Signed Integer Representation

 There are three ways in which signed binary


numbers may be expressed:
 Signed magnitude,
 One’s complement and
 Two’s complement.
 In an 8-bit word, signed magnitude
representation places the absolute value of
the number in the 7 bits to the right of the
sign bit.

29
Signed Magnitude

 For example, in 8-bit signed magnitude,


 positive 3 is: 00000011
 Negative 3 is: 10000011

 Arithmetic human-like

30
Signed Magnitude

 Example:
 75 + 46 = ?

31
Signed Magnitude

 Example:
 Using signed magnitude
binary arithmetic, find the
sum of 75 and 46.

In this example, we were careful careful to pick two


values whose sum would fit into seven bits. If that
is not the case, we have a problemOverflow

Overflow occurs when sign is not correct


(what it means. is it correct sayings?) 32
Signed Magnitude

 Example:
 107 +46 =?

 What u get?

33
Signed Magnitude

 Example:
 107 +46 =?

 We see that the carry from the


seventh bit overflows and is
discarded, giving us the erroneous
result: 107 + 46 = 25.

34
Signed Magnitude

 -46 - 25

• Because the signs are the same, all we do is


add the numbers and supply the negative sign
when we are done.

35
Signed Magnitude

 46-25

• The sign of the result gets the sign of the number


that is larger.
– Note the “borrows” from the second and sixth bits.

36
Signed Magnitude
 Easy for Human
Complicated Computer Hardware
 Two different representations for zero: positive zero and
negative zero. (Does K+(-K) works for both
representations?)
There is discontinuity in the number system, adding
1 to the number 7 should give 8 but it gives the
value -0. 7 + 1 should give 8 but it gives -0
0 1 1 1
1
1 0 0 0
37
 Other system (Complements)
One’s complement Representation

 For example, in 8-bit one’s complement,

positive 3 is: 00000011


Negative 3 is: 11111100

Just FLIP ALL BITS.

38
One’s complement Representation

 With one’s complement


 48 -19

39
One’s complement Representation

 one’s complement is simpler to implement


than signed magnitude.
 But it still has the disadvantage of having two
different representations for zero: positive
zero and negative zero.
 Two’s complement solves this problem.

40
Two's Complement representation
starting value 00100100 = +36

step1: reverse the bits (1's complement) 11011011

step 2: add 1 to the value from step 1 + 1

sum = 2's complement representation 11011100 = -36

Sum of an integer and its 2's complement must be zero:


00100100 + 11011100 = 00000000 (8-bit sum)  Ignore Carry

The easiest way to obtain the 2's complement of a


binary number is by starting at the LSB, leaving all the
0s unchanged, look for the first occurrence of a 1. Leave
this 1 unchanged and complement all the bits after it.
Two’s complement Representation
 To express a value in two’s complement:
 If the number is negative, find the one’s
complement of the number and then add 1.
 Example:
 In 8-bit one’s complement, positive 3 is: 00000011
 Negative 3 in one’s complement is: 11111100
 Adding 1 gives us -3 in two’s complement form:
11111101.

42
Two’s complement Representation

 With two’s complement arithmetic, all we do is add


our two binary numbers. Just discard any carries
emitting from the high order bit.

48 - 19

We note that 19 in one’s complement is:


00010011, so -19 in one’s complement is:
11101100,
and -19 in two’s complement is: 11101101.

43
Overflow for Unsigned integer Addition
 Unsigned overflow – result is “out of range”
 Occurs if carryout of MSB is 1
Binary Check in decimal
1111 15
+ 0100 +4
(cout=1) 0011 3(?)
(unsigned overflow occurs)

44
 25 represent in three ways
 -25
 Sm-----1’s CMP-----2’comp
Detection of overflows in (unsigned and
signed) additions and subtractions:

unsigned signed

Addition Cout of MSB ==1

Subtraction

46
Overflow for signed integer addition? (a)
 (a) Previous example
1111 -1
+ 0100 +4
(cout=1) 0011 3(?)
(Cin =1) (NO signed overflow
occurs)

47
Overflow for signed integer addition (b)
 (b) New example
0110 +6
+0110 +6
(cout=0) 1100 - 4(?)
(cin = 1) (Signed overflow occurs)

48
Overflow for signed integer addition (c)
 (c) New example
1010 -6
+1001 +-7
(cout=1) 0011 3?
(cin = 0) (signed overflow occurs)

49
How do we detect overflow in signed
integer addition?
 Whenever 2 positive values are added and result is
negative
 Whenever 2 negative values are added and the result is
positive
 What if one operand is positive and the other is negative
in addition?
 Cout ≠ Cin

50
Detection of overflows in (unsigned and
signed) additions and subtractions:

unsigned signed

Addition Cout of MSB ==1 Cout of MSB 


Cin of MSB

Subtraction

51
Subtraction in computer hardware
To compute x-y:
 Perform two’s-complement operation on y
 Add x and result of two’s-complement operation.

 Works for unsigned representation


 Works for two’s-complement representation

52
How does subtraction work for unsigned
integers?
 The same adder for unsigned addition is used for
unsigned subtraction
 A – B == A + (-B)
0101 5
- 1001 -9

0101 5
+0111 +(-9)
(cout=0) 1100 12? (unsigned overflow)
Note no carryout and the result is wrong.

53
Overflow in unsigned integer subtraction
1001 9
- 0101 -5

1001 9
+1011 +-5
(cout=1) 0100 4 (correct answer)
There is carryout and the result is correct!
Carryout of MSB == 1 means no overflow in unsigned subtraction
Carryout of MSB == 0 means overflow in unsigned subtraction

54
Overflow in signed integer subtraction
 No need to implement a separate subtractor
 A – B = A + (-B)
 Overflow may occur
 Overflow detection same as overflow addition of signed
integers
 Whenever 2 positive values are added and result is negative
 Whenever 2 negative values are added and the result is positive
 Or Carryout of MSB  Carryin of MSB

55
Detection of overflows in (unsigned and
signed) additions and subtractions:

unsigned signed

Addition Cout of MSB ==1 Cout of MSB 


Cin of MSB

Subtraction Cout of MSB ==0 Cout of MSB 


Cin of MSB

56
Overflow detection Example

 Example:
 107 + 46 ( in 2’s Complement)
 We see that the nonzero carry
from the seventh bit overflows into
the sign bit, giving us the
erroneous result: 107 + 46 = -103.

Rule for detecting two’s complement overflow: When


the “carry in” and the “carry out” of the sign bit differ,
overflow has occurred.
57
Negative Numbers Range

32 bits can only represent 232 numbers – if we wish to also represent


negative numbers, we can represent 231 positive numbers (incl zero)
and 231 negative numbers

0000 0000 0000 0000 0000 0000 0000 0000two = 0ten


0000 0000 0000 0000 0000 0000 0000 0001two = 1ten

0111 1111 1111 1111 1111 1111 1111 1111two = 231-1

1000 0000 0000 0000 0000 0000 0000 0000two = -231


1000 0000 0000 0000 0000 0000 0000 0001two = -(231 – 1)
1000 0000 0000 0000 0000 0000 0000 0010two = -(231 – 2)

1111 1111 1111 1111 1111 1111 1111 1110two = -2
1111 1111 1111 1111 1111 1111 1111 1111two = -1
58
Two's Complement Representation
 Positive numbers 8-bit Binary Unsigned Signed
value value value
 Signed value = Unsigned value
00000000 0 0
 Negative numbers 00000001 1 +1

 Signed value = Unsigned value - 2n 00000010 2 +2


... ... ...
 n = number of bits
01111110 126 +126
 Negative weight for MSB
01111111 127 +127
 Another way to obtain the signed
10000000 128 -128
value is to assign a negative weight
to most-significant bit 10000001 129 -127
... ... ...
1 0 1 1 0 1 0 0
11111110 254 -2
-128 64 32 16 8 4 2 1
11111111 255 -1
= -128 + 32 + 16 + 4 = -76
Sign Bit
Highest bit indicates the sign. 1 = negative, 0 = positive

sign bit

1 1 1 1 0 1 1 0
Negative

0 0 0 0 1 0 1 0 Positive

If highest digit of a hexadecimal is > 7, the value is negative


Examples: 8A and C5 are negative bytes
A21F and 9D03 are negative words
B1C42A00 is a negative double-word
Mapping Signed  Unsigned
Bits Signed Unsigned
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
T2U
0110 6 6
0111 7
U2T
7
1000 -8 8
1001 -7 9
1010 -6 10
1011 -5 11
1100 -4 12
1101 -3 13
1110 -2 14
1111 -1 15
Mapping Signed  Unsigned
Bits Signed Unsigned
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4
= 4
0101 5 5
0110 6 6
0111 7 7
1000 -8 8
1001 -7 9
1010 -6 10
+/- 16
1011 -5 11
1100 -4 12
1101 -3 13
1110 -2 14
1111 -1 15
Conversion Visualized
 2’s Comp.  Unsigned
UMax
 Ordering Inversion UMax – 1
 Negative  Big Positive

TMax + 1 Unsigned
TMax TMax Range

2’s Complement 0 0
Range –1
–2

TMin
Summary of integer representation

Contents of Unsigned Sign-and- One’s Two’s


Memory Magnitude Complemen Complemen
------------ ------------ --------- t t
0000 0 +0 --------- --------
0001 1 +1 +0 +0
0010 2 +2 +1 +1
0011 3 +3 +2 +2
0100 4 +4 +3 +3
0101 5 +5 +4 +4
0110 6 +6 +5 +5
0111 7 +7 +6 +6
1000 8 -0 +7 +7
1001 9 -1 -7 -8
1010 10 -2 -6 -7
1011 11 -3 -5 -6
1100 12 -4 -4 -5
1101 13 -5 -3 -4
1110 14 -6 -2 -3
1111 15 -7 -1 -2
-0 -1
Ranges of Signed Integers
The unsigned range is divided into two signed ranges for positive
and negative numbers

Practice: What is the range of signed values that may be stored


in 20 bits?

You might also like