6.6 Integers

ISO Standard Implementation
“Any extended integer types that exist in the implementation (C99 6.2.5).”
The __int24 and __uint24 keywords designate a signed and unsigned, respectively, 24-bit integer type.
“Whether signed integer types are represented using sign and magnitude, two’s complement, or one’s complement and whether the extraordinary value is a trap representation or an ordinary value (C99 6.2.6.2).”
All integer types are represented as two’s complement and all bit patterns are ordinary values.
“The rank of any extended integer type relative to another extended integer type with the same precision (C99 6.3.1.1).”
There are no extended integer types with the same precision.
“The result of, or the signal raised by, converting an integer to a signed integer type when the value cannot be represented in an object of that type (C90 6.2.1.2, C99 6.3.1.3).”
When converting value X to a type of width N, the value of the result is the Least Significant N bits of the 2’s complement representation of X. That is, X is truncated to N bits. No signal is raised.
“The results of some bitwise operations on signed integers (C90 6.3, C99 6.5).”
The right shift operator (>> operator) sign extends signed values. Thus, an object with the signed int value 0x0124 shifted right one bit will yield the value 0x0092 and the value 0x8024 shifted right one bit will yield the value 0xC012. Right shifts of unsigned integral values always clear the MSb of the result. Left shifts (<< operator) of signed or unsigned values always clear the LSb of the result.
 Other bitwise operations act as if the operand was unsigned.