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

→‎負の整数の見方: わざわざ元に戻さなくてもよい
(後半をどうしたものか)
(→‎負の整数の見方: わざわざ元に戻さなくてもよい)
11011100(2の補数)
 
== 負の数の見方 ==
2の補数で表現された負の数の値を考えるには、二進法の各桁の重みについて、最上位ビット(MSB)のみ符号が反転したものとして計算すれば良い。
コンピュータにおいては、2の補数と符号ビットを使った方法で負の整数を表すことが多い。こうした方法での負の整数の見方を例をあげて説明する。
 
たとえば 1101<sub>2</sub> は、符号無しの二進法であれば、2<sup>3</sup> + 2<sup>2</sup> + 2<sup>0</sup> = 8 + 4 + 1 = 13 であるが、2の補数表現による負の数であるとした場合は、'''-2<sup>3</sup>''' + 2<sup>2</sup> + 2<sup>0</sup> = '''-8''' + 4 + 1 = -3 である。
16ビットの整数型数値を考える。
ここで、左端のビットを符号ビットとし、符号ビットが1なら負数とする。符号ビット以外の部分は、負の整数の場合、絶対値が2の補数で格納されていることとする。
 
1111 1111 1111 0001<sub>2</sub> のような、上位側に1が並んだ数の場合も同様にして求めてもよいが、正の数の時に、上位側の0を無視するように、1が連続する間は無視し、最後の1の重みを負として、そこから下位の桁について同様に計算してもよい。
1111 1111 1111 0001<sub>2</sub>は、どういう数値を表しているのだろうか?
 
:左端の符号ビットより符号はマイナスとわかる。次に絶対値を求めることを考えればいい。
(-)1111111 1111 1111 0001<sub>2</sub>の場合、-16 + 1 で、-15 である。
:絶対値部分は2の補数になっているので、2の補数を求める手順の逆をすればいい。まず、1を引くことにより1の補数にする。
(-)111 1111 1111 0000<sub>2</sub>
:ビット反転し、1の補数を元の数値にする。
(-)000 0000 0000 1111<sub>2</sub>
:これは10進の15。符号をつけて、結局、-15のこととわかる。
 
== 十進法との対応 ==