「2の補数」の版間の差分

(関連項目を追加)
 
頭の部分の1個以上の0を含む(正規化されていない)ある桁数の二進法で表現された数があるとき、その最上位ビット (MSB) よりひとつ上のビットが1で、残りが全て0であるような値(8ビットの整数であれば、100000000<sub>(二進)</sub> = 256)から、元の数を引いた数が'''2の補数'''である。MSBの重みが1であるような固定小数点表現の場合は特に「2」の補数となる。
 
== 例 ==
−36([[十進法]])が、8ビットで、2の補数でどのように表されるかを例として示す。
 
二進法8ビットで、36は 00100100 である。
100000000 (256)
-) 00100100 (36)
------------
11011100 (220)
 
したがって、'''2の補数'''による−36の表現は 11011100 (十進表現で220)である。
 
元の数 (00100100) と求められた (11011100) の2つの数を足し合わせると、すべての桁が 0 になり、負数が求められていることがわかる(最上位桁からの桁上がりの 1 は無視する)。
 
=== 別の求め方 ===
「1の補数に1を加える」という方法もある。算術的に考えると、(たとえばこの例の場合)「256 − 36」という計算を「(255 − 36) + 1」に分解している。
 
まず
00100100 の各ビットを反転させる(1の補数を求める)と、
11011011
次に1を加えると、
11011011
+) 1
-----------
11011100
 
得られた値は、上記の値と同じことが分かる。
 
== 1の補数 ==
匿名利用者