Integer Representation and Binary Arithmetic
Integer Representation
- Bit-- Binary Digit
- 1 byte = 8 bits
- 1 word = N bytes, take N to be 2 (e.g., 16 bit machine)
- Integer takes up 2 bytes; can be signed or unsigned.
Unsigned Integers
- Can represent whole numbers from 0 to 65,535
- In binary, this is from
- Internally, binary representation of decimal value as 16 bits.
Signed Integers
- Need to reserve one bit for the sign.
- Three ways:
- Sign-Magnitude
- 1's Complement
- 2's Complement
Sign-Magnitude
- Uses most significant bit of the word to represent the sign.
- 0 - Positive
- 1 - Negative.
- Rest of the number is encoded in magnitude part
37 = 00000000 00100101
-37 = 10000000 00100101
6712 = 00011010 00111000
-6712 = 10011010 00111000
- Can represent numbers from -32,767 to 32,767.
- But, two representations for zero:
0 = 00000000 00000000
-0 = 10000000 00000000
Arithmetic can be cumbersome.
1's Complement
- Negative number is stored as bit-wise complement of corresponding positive
number.
- Leftmost bit of positive number is 0. That of negative number is 1.
196 = 00000000 11000100
-196 = 11111111 00111011
- Can represent numbers from -32,767 to 32,767.
- Arithmetic is easier than sign-magnitude.
- But, still have two representations for zero:
0 = 00000000 00000000
-0 = 11111111 11111111
2's Complement
- Modern Method
- Positive number represented in same way as other two methods
- Negative number obtained by taking 1's Complement of positive number
and adding 1.
6713 = 00011000 00011101
1's Comp = 11100111 11100010
2's Comp = 11100111 11100011
- Word integer can represent numbers from -32,768 to 32,767.
- Byte integer can represent numbers from -128 to 127.
- One version of zero:
00000000 00000000
Conversion of Byte Integer to Word
- Sign Extension
- Copy sign bit of the byte into all the bits of the upper byte of the
word.
37 = 00100101 -> 00000000 00100101
-37 = 11011011 -> 11111111 11011011
cbw
- converts the signed byte in AL to a word in AX
Conversion of Word Integer to Byte
- Remove upper byte of word. Retain only the lower byte.
- Meaningful only if original number can be represented by a byte.
Integer Arithmetic (1's Comp and 2's Comp)
- Addition: Simply add the two binary representations.
- Subtraction: Find negative of one number, add to the second.
Addition in 1's Comp
- Add binary representations of the two numbers.
- If there is a carry, add it back in on the right side.
51 00110011
+ (-37) + 11011010
----------
1 00001101
+ 1
----------
14 00001110
Addition in 2's Comp
- Add binary representations of the two numbers.
- Disregard the carry.
51 00110011
+ (-37) + 11011011
----------
14 1 00001110
Subtraction in 2's Comp
Overflow
- If two numbers have different signs, their sum will never overflow.
- If they have the same sign, they might overflow.
- Overflow has occurred if sign of result is different than sign of addends.