1の補数、2の補数

2進法で「1の補数」(ones' complement)とは、足すと1がずっと並ぶ数になる数です。例えば 0101 の「1の補数」は 1010 です。0101 + 1010 = 1111 になりますね。この場合「1」は複数形(ones)になることにご注意ください。

これとは別に、「2の補数」(two's complement)という概念があります。これは、足すと1桁大きい2の累乗になる数です。例えば 0101 の「2の補数」は、足して 10000 になる数ですから、1011 です。この場合「2」は単数形(two)になることにご注意ください。つまり、英語で書いた場合、アポストロフィの位置が違います(KnuthのTAOCP第2巻p.203参照)。

「1の補数」に1を足すと「2の補数」になります。

教科書によっては「2の補数」を単に「補数」と呼んでいます。