| 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. | |||||||||||