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

削除された内容 追加された内容
4行目:
 
頭の部分の1個以上の0を含む(正規化されていない)ある桁数の二進法で表現された数があるとき、その最上位ビット (MSB) よりひとつ上のビットが1で、残りが全て0であるような値(8ビットの整数であれば、100000000<sub>(二進)</sub> = 256)から、元の数を引いた数が'''2の補数'''である。MSBの重みが1であるような固定小数点表現の場合は特に「2」の補数となる。
 
== 十進法との対応 ==
{| class="wikitable" style="text-align:right"
|-
! 十進表記 !! 4ビット整数表記
|-
| −8 || 1000
|-
| −7 || 1001
|-
| −6 || 1010
|-
| −5 || 1011
|-
| −4 || 1100
|-
| −3 || 1101
|-
| −2 || 1110
|-
| −1 || 1111
|-
| 0 || 0000
|-
| 1 || 0001
|-
| 2 || 0010
|-
| 3 || 0011
|-
| 4 || 0100
|-
| 5 || 0101
|-
| 6 || 0110
|-
| 7 || 0111
|}
<!--↓2進法において、「a XOR (a ± 1) を計算する」という、より一般的な手法の応用ないし変形に過ぎません。キモは加算器の高速桁上げにあり、2の補数表現によってもたらされる恩恵であると考えるには無理があります。--><!--
== テクニック ==
=== ビットの立っている最下位ビットだけを残して残りを0にする方法 ===
2の補数では、ビットの立っている最下位ビットだけを残して残りのビットを0にするには、[[C言語]]で x & -x により、可能である。例えば、14 & -14 は 2 となる。
 
00001110 14
&) 11110010 -14
------------
00000010 2
-->
 
== 関連項目 ==