Although many common implementations use a two's complement representation of signed integers, the C99 standard declares this as implementation-defined, and allows all of the following representations:
- Sign and magnitude
- Two's complement
- Ones' complement