2進数と10進数の変換を手計算でする方法|16進数も
2進数を10進数に直すときは、各桁に1・2・4・8…の重みを掛けて足します。10進数を2進数に直すときは、2で割り続けて余りを下から読みます。182を例に両方の計算を表で追い、16進数・8進数への区切り方と、小数・負の数でつまずく点をまとめました。
公開読了目安 約6分
この記事の要点
- 2進数→10進数は、右の桁から1・2・4・8…の重みを掛けて足す
- 10進数→2進数は、2で割り続けて、余りを下から上へ読む
- 2進数→16進数は、右から4桁ずつ区切って0〜Fに置き換える
- 桁数が4の倍数でないとき、4桁の区切りを左から始めると別の数になる
- 10進数の0.1は、2進数では終わらない小数になる
目次
2進数を10進数に直すときは、右の桁から順に1・2・4・8…の重みを掛けて、足し合わせます。 10進数を2進数に直すときは、2で割り続けて、余りを下から上へ並べます。
16進数とのあいだは、2進数を右から4桁ずつ区切れば、1区切りずつ置き換えるだけです。 この記事では、182を例に、どの計算も表で1段ずつ追います。
授業や資格試験の問題を手で解くときの手順と、確かめ算のしかたをまとめました。 小数や負の数でつまずく点にも触れます。
2進数を10進数に直す:桁の重みを足す
2進数の各桁には、右から順に1・2・4・8・16…の重みがあります。 1つ左へ進むごとに、重みが2倍になります。
2進数の10110110を、右の桁から順に並べると次のとおりです。
| 右から | 重み | 桁の数字 |
|---|---|---|
| 1桁目 | 1 | 0 |
| 2桁目 | 2 | 1 |
| 3桁目 | 4 | 1 |
| 4桁目 | 8 | 0 |
| 5桁目 | 16 | 1 |
| 6桁目 | 32 | 1 |
| 7桁目 | 64 | 0 |
| 8桁目 | 128 | 1 |
桁の数字が1の行の重みだけを足します。 128 + 32 + 16 + 4 + 2 = 182 で、10110110は10進数の182です。
0の桁は、重みを掛けても0なので飛ばしてかまいません。 足すのは1の桁だけ、と覚えると計算が速くなります。
10進数を2進数に直す:2で割って余りを並べる
10進数の182を2で割り、商が0になるまで割り続けます。 割るたびに出る余り(0か1)を書き留めておきます。
| 割られる数 | 2で割った商 | 余り |
|---|---|---|
| 182 | 91 | 0 |
| 91 | 45 | 1 |
| 45 | 22 | 1 |
| 22 | 11 | 0 |
| 11 | 5 | 1 |
| 5 | 2 | 1 |
| 2 | 1 | 0 |
| 1 | 0 | 1 |
余りを、いちばん下の行から上へ読みます。 1・0・1・1・0・1・1・0で、182は2進数の10110110です。
大きい重みから引いていく方法もある
2で割る代わりに、重みを大きい順に引いていく方法もあります。 182から、引ける最大の重み128を引くと54が残ります。
54からは32、残り22から16、残り6から4、残り2から2を引いて0になります。 引けた重み(128・32・16・4・2)の桁を1、引けなかった桁を0にすると、10110110です。
数が小さいときや、重みの表が頭に入っているときは、こちらのほうが速く済みます。 2で割る方法は、桁が多くても同じ手順で進められます。
答えの桁数を先に見積もる
2進数の桁数は、重みの表から見当がつきます。 8桁で表せる最大の数は、8桁すべてが1の11111111で、255です。
182は128以上256未満なので、2進数にすると8桁になります。 計算して7桁や9桁になったら、どこかで割り算か足し算を間違えています。
一般に、n桁の2進数で表せる最大の数は、2のn乗から1を引いた数です。 4桁なら15、16桁なら65,535です。
2進数と16進数は、右から4桁ずつ区切る
16進数は、0〜9とA〜Fの16種類の数字を使います。 2進数の4桁は0〜15のどれかなので、16進数の1桁にちょうど対応します。
| 2進数 | 10進数 | 16進数 |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1011 | 11 | B |
| 1100 | 12 | C |
| 1101 | 13 | D |
| 1110 | 14 | E |
| 1111 | 15 | F |
10110110を右から4桁ずつ区切ると、1011と0110です。 1011はB、0110は6なので、16進数ではB6になります。
16進数から10進数へは、16の重みで足します。 B6なら、Bの11に16を掛けた176と、6を足して182です。
区切りは必ず右から
桁数が4の倍数でないときは、区切り方で答えが変わります。 6桁の101101(10進数の45)で比べると、次のとおりです。
- 右から区切る: 10 と 1101 で、2とDになり 2D。10進数では45で、元の数と合う
- 左から区切る: 1011 と 01 で、Bと1になり B1。10進数では177で、別の数になる
左の端に余った桁は、頭に0を足して0010のように4桁にそろえると読み違えません。 頭に0を足しても、数の大きさは変わりません。
8進数は3桁ずつ
8進数は0〜7の8種類なので、2進数を右から3桁ずつ区切ります。 10110110は、10・110・110に分かれ、2・6・6で、8進数の266です。
8進数は、ファイルの権限を表す755のような数で見かけます。 権限の数の読み方は、755とrwxr-xr-xを行き来する手順にまとめています。
小数は、2進数で終わらないことがある
小数の部分を2進数にするときは、2で割る代わりに2を掛けます。 掛けた結果の整数の部分(0か1)を上から順に並べます。
0.625なら、2を掛けて1.25(1)、残りの0.25に掛けて0.5(0)、0.5に掛けて1.0(1)で終わります。 上から並べて、0.625は2進数の0.101です。
ところが0.1は、何回2を掛けても小数の部分が0になりません。 0.0001100110011…と、0011のくり返しが続く小数になります。
小数を2進数で持つ計算で、0.1がぴったりにならないのはこのためです。 手計算の問題では、「小数第何位まで求めるか」の指示を先に確かめてください。
負の数は「-」を付けるか、補数で表すか
負の数の書き方には、10進数と同じく「-」を付ける書き方と、決まった桁数の中で表す「補数」があります。 桁数(ビット数)を決めて負の数を表す問題では、補数の書き方が使われます。
8ビットの「2の補数」では、-1は11111111です。 同じ-1でも、「-」を付ける書き方なら-1のままです。
補数で書いた数を10進数に戻すときは、いちばん左の桁の重みを、128ではなく-128として足します。 11111111なら、-128に残りの127を足して-1です。
上の重みの表は負の数を考えない表なので、11111111を足すと255になります。 補数の答えを確かめるときは、いちばん左の桁だけ符号を変えて足してください。
どちらで答えるかは、問題文の指示と桁数の有無で確かめます。 桁数の決まった箱に数を入れる話は、2038年問題とはの32ビットの上限でも出てきます。
手計算の答えを確かめる
進数変換ツールの2進数の欄に10110110を入れると、10進数の欄に182、16進数の欄にb6が出ます。 16進数の大文字小文字は、詳細設定で切り替えられます。
4桁ごとに空白を入れた「1011 0110」のままでは読めないので、空白を消してから入れてください。 このツールは整数だけを扱い、小数の変換には使えません。
負の数は「-」を付けた書き方で出し、補数の形にはしません。 補数の問題は、いちばん左の桁を-128として足す手計算で確かめてください。
ツールの操作は、2進数・16進数を相互変換する使い方にまとめています。
関連記事
- 2進数・16進数を相互変換する使い方(ツールの操作)
- 透明度の16進数早見表(16進数2桁と0〜255の対応)
- 755とrwxr-xr-xを行き来する手順(8進数で書く権限)
あわせて読みたい
同じテーマ・関連ツールの記事です。