2の補数について続きです

新人Y子
前回のおさらいですが、コンピュータでは、マイナス値を「2の補数」で表現し、-1は2進数で「11111111」(*1)となるのでしたよね。
しげちゃん先生
はい。
新人Y子
でも、普通に「00000000」から1ずつ足していっても、「11111111」にたどり着きますよね?
+と-はどこで区別すればいいんですか?
しげちゃん先生
最上位のビットが1になっているものがすべてマイナスの値になります。
2の補数表現で、プラス側の最大値は「01111111」(=127)になります。
新人Y子
なるほど、最上位ビットが符号でしたね。
あと、「01111111」が、127という事をどうやって確かめられますか?
しげちゃん先生
10進数と同じように、2進数でも各桁に重みがあるので、「1」になっている桁に対応する重みを合計すれば出るんです。
最下位桁 = 2の0乗(=1)
 1桁目 = 2の1乗(=2)
 2桁目 = 2の2乗(=4)
 3桁目 = 2の3乗(=8)
 4桁目 = 2の4乗(=16)
 5桁目 = 2の5乗(=32)
 6桁目 = 2の6乗(=64)
新人Y子
試しに、「01111111」は・・・?
1+2+4+8+16+32+64なので、127 ですね!
しげちゃん先生
では、先ほどと逆の方法で、10進数から2進数の変換もやってみましょう。
しげちゃん先生
70を2進数にしてください。
新人Y子
1,2,4,8,16,32,64,128,・・・から選ぶ訳ですよね。
64 + 4 + 2で 70 になりますね。
新人Y子
「64」と「4」と「2」の重みに対応する桁に1を立てて、「01000110」ですか?
しげちゃん先生
正解です!
テクトレージマン
次回に続く

(*1) char型の場合

0