基本情報技術を学んだ事がある人、学んでいる最中の人がいずれも悩んだ事があるだろうn進数の計算。
自分もその一人でした…。ですが、その状態から脱却すべく必死になって勉強した結果ある程度はわかる様になったので自分なりにわかりやすく解釈したものをここに残そうと思います。
今回は第2段ということで前回の続きになります。前回の記事は以下の通りになります。
n進数という名前が出てくると「うっ頭が…」ってなる人のn進数講座(1)〜n進数の基本変換について〜
#■n進数の足し算引き算について
##【足し算】
ぶっちゃけ足し算は余裕です。繰り上がりのタイミングさえ気をつければ10進数と同じ考え方でいけます。
例)2進数の足し算
繰り上げのタイミングが2進数の場合2になるタイミングで次の桁にいく感じ
1 | 1 | 0 | 1 | |
---|---|---|---|---|
+ | 1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 | 0 |
##【引き算】
これがややこしい…。なぜかというと補数という考え方が出てくるためです。
補数・・・「先頭の1ビットは符号とする考え方」
例)3と−3を表現する場合
(3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
(-3) | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
sum | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
ふむふむ…。では、もしこの二つを足し算すると答えは10000110つまり134ね!
…いやいや計算できてないやないかーい!
実はこれ−3の表記方法に間違いがあります。正解は1111101となります。
計算方法(考え方は)は以下の通り
3・・・00000011←まずこれに足すと9桁目に繰り上がる数を出すと、11111100となる。この11111100に+1した数つまり11111101←これが2の補数で表した−3になります!
はあ…。でも説明してもわかりにくいですよね…。
ってことで自分がどう考えているかというと
「2の補数=正の数を表記したものを全部反転させた後最後に+1した数」って覚えています。
よって最後に例の計算はどのようになるかというと…。
(3) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
---|---|---|---|---|---|---|---|---|---|
(-3) | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
sum | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
↑最後9桁目の数は表記しないため結果00000000=0となるわけです。 |
#■次回は…
以上が2進数における足し算、引き算の計算方法についてでした。
どうでしょう?頭痛くなってきませんか?
次回は掛け算、割り算をやっていきたいと思います。
では次回まで〜〜