Integers: Sign extension
We may need to change the number of bits used to represent a number.
For example, C has int, short int, and long int to represent integers.
The language doesn't specify the exact size of each form, but
sizeof (short int) <= sizeof (int) <= sizeof (long int)
How do we cast from one kind of int to a larger number of bits?
ints are represented in N-bit 2C
To convert a number from N bits to N + K bits in 2C notation,
copy (extend) the sign bit from bit N-1 to bit N + K -1
If the value is positive, all the higher-order bits will become 0;
if the value is negative, all the higher-order bits will become 1.
All of the other bits (location N-2, . . . , 0) remain unchanged.
Example:
 3ten is 0011 in 4 bits
In 8 bits, it becomes 00000011 (the zero sign bit is extended to the left).
 -3ten is 1101 in 4 bits
In 8 bits, it becomes 11111101 (the one sign bit is extended to the left).