「2の補数」の版間の差分
削除された内容 追加された内容
編集の要約なし |
|||
1行目:
'''2の補数'''(にのほすう)は、2、ないし2のべき乗の[[補数]]、またそれによる負の値の表現法である。特に[[二進法]]で使われる。(数学的あるいは理論的には、三進法における減基数による補数、すなわち 3<sup>n</sup>
[[コンピュータ]]の固定長[[整数型]]や、[[固定小数点数]]で、負の値を表現するためや[[加算器]]で減算をするために使われる。
頭の部分の1個以上の0を含む(正規化されていない)ある桁数の二進法で表現された数があるとき、その最上位ビット (MSB) よりひとつ上のビットが1で、残りが全て0であるような値(8ビットの整数であれば、100000000<sub>(二進)</sub>
== 例 ==
二進法8ビットで、36は 00100100 である。
100000000
11011100
したがって、'''2の補数'''による
元の数
=== 別の求め方 ===
「1の補数に1を加える」という方法もある。算術的に考えると、(たとえばこの例の場合)「256
まず
00100100 の各ビットを反転させる(1の補数を求める)と、
11011011
次に1を加えると、
11011011
+) 1
11011100
33行目:
== 1の補数 ==
二進法における、減基数すなわち 2<sup>n</sup>
00100100(元の数)
11011011(1の補数)
39行目:
== 負の数の値 ==
2の補数で表現された負の数の値を考えるには、二進法の各桁の重みについて、最上位ビット
たとえば 1101<sub>2</sub> は、符号無しの二進法であれば、2<sup>3</sup> + 2<sup>2</sup> + 2<sup>0</sup> = 8 + 4 + 1 = 13 であるが、2の補数表現による負の数であるとした場合は、'''
1111 1111 1111 0001<sub>2</sub> のような、上位側に1が並んだ数の場合も同様にして求めてもよいが、正の数の時に、上位側の0を無視するように、1が連続する間は無視し、最後の1の重みを負として、そこから下位の桁について同様に計算してもよい。
1111 1111 1111 0001<sub>2</sub> の場合、
== 十進法との対応 ==
|