符号付数値表現
これにあふれた桁(キャリー)を加算すると正しい答え (00000001)が出てくるのである。
この数値表現体系は古いコンピュータでは一般的だった。PDP-1とかUNIVAC 1100/2200 seriesなど多くのシステムが1の補数を使っていた。
なお、「1の補数」表現とは、英語では "ones' complement" 、すなわちoneの複数形onesの所有格であり、「2の補数」が "two's complement"、すなわちtwoの単数形の所有格であるのと異なる。これは、1の補数が実際には 1 がずらっと並んだものから元の数を引くことで符号を反転させるためである。2の補数では単一の2のべき乗から元の数を引いて符号を反転させる。
IPv4のヘッダーチェックサムは1の補数を使っている。
指数-仮数部表現で負数の仮数部をビット毎に反転させると、1の補数表現に変換される。
二進数における1の補数表現は、負の数の表現に絶対値のビット単位のNOTを適用することで得られる。符号-仮数部 表現のように、1の補数でも 0 には二種類の表現がある(00000000 (+0), 11111111 (−0))。
例えば、00101011 (43) の1の補数は、11010100 (−43) である。1バイト幅で1の補数で表せる数値の範囲は −12710 から +12710 となる。
この体系でふたつの数の足し算をするには、まず通常の二進数の加算を行い、演算の結果出てきたキャリー(桁あふれ)を戻して加算する必要がある。なぜそうなるのかを知るために、−1 (11111110) と +2 (00000010) を加算してみよう。二進数の加算を行うと 00000000 となってしまい、正しい答えではない。
符号・絶対値表現(、英: sign-magnitude representation)は通常の位取り記数法で行うよう、正および負の数を表す符号(+ および −)として1つのビットを使い(符号ビット(英語版))、残りのビットでその数の絶対値を表す符号付きの数の表現方法である。符号・絶対値表現において、符号ビットの値が 0 なら符号は +、1 なら符号は − が付くものと見なされる。符号ビットは通常最上位ビット(MSB)に割り当てられ、下位のビット列で絶対値を表す(例:8ビット符号・絶対値表現において十進数 −43 は二進数 10101011、+43 は 00101011 で表される)。
8ビットで数値を表す場合、符号は1ビット、絶対値は7ビットで表現される。この場合、絶対値の範囲は 0000000 から 1111111 まで(十進法で +0 から +127 まで)である。したがって、8ビットの符号・絶対値表現で表せる数の範囲は −127 から +127 である。
符号・絶対値表現において、0 を表す方法は 00000000 (+0) と 10000000 (−0) の2通りある。
初期の二進コンピュータ(例えばIBM 7090)はこの表現方法を採用していたものもある。また、多くの十進コンピュータは符号・絶対値表現を用いている。