2進数から10進数へ:ビットの並びを意味のある数値に戻す
この変換でわかること
0と1の文字列を基数2の数として読み、基数10で書き直します。画面に出ている値がすでに機械の形式であるとき、たとえばレジスタの内容やマスク、フラグ用のバイトを人間の判断材料に変えるのがこの向きの変換です。
桁の重みを足すだけの手計算
2進数の各桁は、右端から数えた位置に応じて1、2、4、8…という重みを持ちます。1が立っている位置の重みを足し合わせるだけで、掛け算は一切不要です。10011100なら128、16、8、4の4か所が立っているので、10進数では156になります。重みを8個覚えておけば、日常的な確認は暗算で足ります。
2進数と10進数の変換表
よく登場するビットパターンと、その10進数の値です。すべてのビットが1の行は特に重要で、必ず次の2の累乗より1小さい値になります。
| 2進数 | 10進数 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 10 | 2 |
| 11 | 3 |
| 1010 | 10 |
| 1111 | 15 |
| 10000 | 16 |
| 101010 | 42 |
| 11111111 | 255 |
| 100000000 | 256 |
フラグや状態バイトを読む
状態バイトは数というより、8つの是か非かを1つの値に詰め込んだものです。10進数に直すと比較や記録に便利な手ごろな値になり、個々のビットは何が起きたかを教えてくれます。ビット単位で書かれたデータシートと、10進数で記録されたログを行き来するには、この変換が欠かせません。
先頭の0は消さずに残す
先頭の0は値そのものを変えませんが、幅は変えます。その幅が、そのフィールドが1バイトなのか4バイトなのかを教えてくれます。固定幅のフィールドから値を写すときは、0の詰め物も一緒に控えておくと、あとで桁がずれません。
よくある質問
2進数を暗算で読むにはどうすればよいですか?
8ビットなら、左から128、64、32、16、8、4、2、1と位の値を書き、1が立っている位置の値を足します。10011100なら128 + 16 + 8 + 4で156です。8ビットの練習だけで日常的な場面の大半をカバーできます。
11111111が255で256ではないのはなぜですか?
8ビットは0から数えて256通りの値を表せるため、最大値は255になります。一般にnビットの最大値は2のn乗から1を引いた値です。この1の差が、1バイトが256通りを表せるのに256という値は入らない理由です。
バイトごとに空白を入れた2進数を貼り付けられますか?
はい。空白やタブ、アンダースコアは無視されるので、端末やメモリダンプからコピーした文字列もそのまま変換できます。4桁や8桁の区切りは読みやすさのためのもので、値そのものには影響しません。
先頭の1は負の数を意味しますか?
符号付きの2の補数だとあらかじめ決めてある場合に限られます。それはビットそのものではなく形式の性質です。単体で見れば11111111は255にすぎません。本ツールはマイナス記号を明示しない限り、入力を正の値として扱います。
変換できる2進数の桁数に制限はありますか?
貼り付ける実用的な値なら十分に収まります。浮動小数点ではなく整数のまま計算するため、桁数が増えても精度は落ちません。極端に長い入力は黙って切り捨てず、明確なメッセージを返して拒否します。