5月19日(水)1コマ目
今日、やったこと
- なんで2の補数で引き算ができるの?
- 浮動小数点表現
今日のホワイトボード
なんで2の補数で引き算ができるの?
2進数において、2の補数は足すとケタ上がりする最小の数。
10進数3を4ビットの2進数にすると、0011。
この0011の2の補数は1101だが、
10000 - 0011
で表すこともできる。
10000は
4ビットの最大値は 1111
+1するとケタ上がりして、 10000
から、4ビットからケタ上がりして5ビットになった最小の数。
その10000から0011(10進数での3)を引くことで、3の2の補数になる。
違う言い方をすると、0011(10進数の3)に2の補数10000-0011を足すと、10000になる。ケタ上がりして5ケタになっている。
4ビットの計算では、10000は下位4ビットの0000だけが計算対象になり、最上位ビットの1は捨てられる。 そのため、10000は足そうが、引こうが全く影響のない値。ここがポイント。
よって、5-3は
=5+(ー3)
4ビットの2進数でこの計算をしてみると、
5を2進数にすると0101、-3は1101(先ほどの10000 - 0011)。
計算式は
0101 + (10000 - 0011) = 0101 + 10000 - 0011
になる。4ビットの計算なので+10000は結果に影響がないため、
0101 - 0011
になる。0101は10進数にすると5、0011は3。
計算式を10進数に置き換えると
5 - 3
になっている。負の値を絶対値の2の補数で表してもちゃんと元の計算をしていることになる。
|
| 図 2進数の2の補数、10進数の10の補数 |
|
| 図 2進数0011の2の補数は10000-0011 |
|
| 図 負の数を絶対値の2の補数で表して計算式を書くと |
固定小数点と浮動小数点
固定小数点はxxケタ目とxx+1ケタ目の間に小数点がある、小数点の位置が固定された表現方法。
浮動小数点は小数点の位置が変わる表現方法。小数点の位置を変えるためにx10nをする。
![]() |
| 図 固定小数点形式と浮動小数点形式 |
正規化
浮動小数点形式の2進数にするには
1.xxxx × 2n
に変換する必要がある。
仮数部(1.xxxx)は1以上2未満にする。これが正規化。
小数点の位置を変えるとx2nのnが変わるので注意。
![]() |
| 図 正規化 |
次回は
小数を浮動小数点形式の2進数に変換する演習をやってもらいました。
次回は演習の解説+浮動小数点形式の2進数を10進数にするをやります。
ということで、次回はテストはやりません。





コメント