[techaday:0006] 2進数は下から3桁ずつ読もう

[techaday:0006] 2進数は下から3桁ずつ読もう

何か綺麗ですね

はじめに

16進数や2進数がスラスラ読み書きできるようになりたいと思いませんか?普段バイナリをいじらない人でも,宴会芸として使えるかも? ということで,今回は \(\{16進数, 2進数\} \times \{読み, 書き\} \) の元として,2進数の読み方のコツについて書いていきます.

前提知識

  • 3桁の2進数が読める(0〜7までの8通りなので覚えるか計算するかしてください…)
  • 九九と2桁の足し算が暗算できる

効能

  • スラスラとまではいかないものの,めちゃくちゃ迷うことはなくなる

2進数を読む

まずは基本の2進数からです.16ビットは意外と数が大きくなって難しいので8ビットを対象にします.

0〜7の10進数は,2進数では3桁でおさまるので,これはまず覚えてしまいましょう. 慣れないうちはその都度足し算しましょう.そのうち覚えると思います.

さて,ここまでくれば簡単です.あとは下から3桁ずつ読んでいきます. 下位の3桁は読んだそのままの値(0〜7),つぎの3桁は読んだ値に8をかけたものになります. 余った上位の2ビットですが,高々4通りなので覚えられる気がします.

上位2ビット 10進
00 0
01 64
10 128
11 192

こいつらはよく見る数字だと思うのでいけます,きっと.いけない場合は64で掛け算しましょう.

ポイント : 下から3桁ずつ読み,上位2ビットの値と足す

3桁ずつがポイントです.これによって,4ビットずつで読む場合に比べて計算が少し楽になります. 4ビットずつで読むと \(16 \times 15,14,13,12\ldots\) を瞬時に言える必要があり,ハードルがちょっと高いです.

実際にやってみましょう.例えば $$ (01001011)_2 $$ を下から3桁づつで区切ると, $$ 01|001|011 $$ となり,1*8+3で11,上位2ビットは64なので,75と読めます.思ったより瞬殺ですね(書きながら).

$$ 11|011|011 $$ なら,192+24+3で,219です.これならなんとか暗算で読めそうですね.

じゃあこれはどうでしょうか $$ 11|111|011 $$ 192+56+3ですね.私は数値の計算が苦手なので,この辺から暗算では少し時間がかかります. でも考えてみてください.これは \((11111111)_2\) から \((100)_2\) だけ引いたものです. つまり255-4で251になります.このように簡単にできる例もありますが,0のビットが2つより多い場合に使うと余計にややこしくなります.

このように,3ビットずつ読むことで多少楽に読めるようになります.

まとめ

  • 下位から3ビットずつ読むことで暗算がちょっと楽になる
  • すらすらとは言わないけれども,1ビットずつや4ビットずつで読むときに比べて格段に読みやすくなる(当社比)

補足

  • まあGoogleで “0b11111011111 in decimal” とかでやると一発で出てくるんですけどね.ハハハ
Share Comments