初めに
最近コンピュータの動き方について学んでいて、2進数の計算の章に入りました。
その中で、2進数でマイナスの値を求める際は
- 全ての位の値を反転させる
- それに1を加える
という方法で求めるということを知り、「?」となりました。
直感では理解できなかったので、「なぜ?」を理解しながらまとめていきます。
※数学は初心者なので細かいことを言えば違うのかもしれないですが、覚えるための理由付けくらいにはなるかなと思います
2進数でマイナスの値を表現する
まずは、2進数のマイナスの表現の仕方をおさらいしましょう。
例)10進数の-6を4桁の2進数で表すと?
- 10進数の6を2進数で表すと
0110
となる - 2進数では最上位の桁で符号を表現する
以上の知識から、-6は1110
になりそう!
・・・と思ったのですが、これは間違いで、正解は1010
になります。
マイナスの値の計算方法
冒頭に記載した通り、マイナスの値を求める方法はこちらです。
- 全ての位の値を反転させる
- それに1を加える
暗記すればいいっちゃいいのですが、それだと面白くないので、意味を理解してみようと思います。
解説
前提①:そもそもプラスとマイナスの関係とは
そもそもプラスとマイナスの関係とはなんでしょうか。
それは、足して0になるということです。
例えば、8と-8や、15と-15など、符号を変えただけの二つの数を足すと0になります。
2進数においてもそれは同じです。
前提②:0と10000は、どちらも0000
最大桁数がある場合、0はいろんな数で表現することができます。
例として、4桁の2進数で0を表してみましょう。
0は0000
で表すことができますが、これだけ見ると0なのか10000なのか、区別がつきません。
つまり、0と10000を同じ数字とみなすことができるのです。
これらの前提を踏まえると、足して10000をつくることができれば、その数は元の数をマイナスにした数と考えることができるということができます。
改めて2の補数の計算を見てみる
ということで、改めて2の補数の計算方法を見ていきましょう。
先ほどと同様、10進数の-6を2進数で表してみます。
手順1:全ての位の値を反転させる
2進数の6は0110
だったため、それを反転した数は1001
になります。
元の数と足すと、1111
となり、目標である10000
には1足りません。
手順2:それに1を加える
ということで、1を足して10000
にしましょう。
1001
に1を足すと1010
になり、これが2進数における-6になります。
まとめ
2進数でマイナスの値を求める手順は、足して0を求めるための手順を簡略化したものと言い換えることができる。
おまけ:全ての位の値を反転させるとはどういうことか
ところで、なぜ全ての値を反転させると都合よくなるのでしょうか
10進数で考えてみました。
10進数で考えてみる
2進数では、全ての位の値を反転させて元の数と足すと、合計が1111
になりました。
これは、10000
よりも1少ない数です。
対して、10進数における10000
より1少ない数字は9999
です。
つまり、2進数における「全ての位の値を反転させる」とは、10進数における9999
を作るための手段といえます。
このことから、「全ての位の値を反転させる」とは、n進数の場合に各桁がn-1になるような値を求めると言い換えることができます。
2進数の場合、「全ての位の値を反転させる」ことでそれを満たすことができるので、このように言われるというわけです。
終わりに
今回は2進数におけるマイナスの数の求め方を学びました。
理由が分かるとすっきりするし、単純暗記よりも記憶に残りますね!
ここまで読んでいただきありがとうございました!
参考