メインコンテンツへスキップ
CalcMax

10進数→2進数変換

計算結果

10001

2進数

各位の値
16 + 1

10進数から2進数の変換ツールは、整数を10を基数とする表記から2を基数とする表記へ書き換えます。値は変わらず、変わるのは表記だけで、そこへ至る方法が2で割り続けることです。数を2で割り、余りを取り、商をまた2で割り、商が0になるまで続けます。余りが2進数の桁になりますが、出てくる順は逆なので、最後に書いた余りが答えの最初の桁になります。17で試すと、17 ÷ 2は8余り1、次に8 ÷ 2は4余り0、次に4 ÷ 2は2余り0、次に2 ÷ 2は1余り0、最後に1 ÷ 2は0余り1です。余りを下から上へ読むと1、0、0、0、1なので、17は2進数で「10001」と書きます。ほとんどの間違いはこの逆順で起きるので、このページは答えだけでなく割り算を1行ずつ印字します。2進数の位の値は2の累乗で、答えをその位の値の和として読み返すのが点検の方法です。「10001」には16と1が入っていてそれ以外はないので、16 + 1で17に戻ります。数が短くなるときも向きは同じくらい大事です。16のような2の累乗は1が1つでそのあと0が続く形になり、2の累乗より1小さい数は1だけが並ぶ形になるので、15は「1111」、255は「11111111」です。

17を2で割り、商が0になるまで1回ずつ並べたもの

回割り算商余り
117 ÷ 281
28 ÷ 240
34 ÷ 220
42 ÷ 210
51 ÷ 201

これは結果ではなく方法で、だから上のパネルが打ち込まれた数を変換するのに対して、こちらは17で固定されています。余りの列を下から上へ読むと、答えの桁が順に現れます。1、0、0、0、1、つまり「10001」です。この列を上へ読まなければならないのは、各回の割り算が残りの数のいちばん下の桁を見つけるからです。最初の回が一の位を決め、2回目が2の位を決め、というふうに、回は答えを右から左へ進みます。商が0になったところで止めてよいのは、商が0であることが、今の位より上に何も立っていないという意味だからです。表で気づく価値のある細部が2つあります。余りはすべて0か1でそれ以外にはなりません。割る数が2だからです。そして商は各回で半分より多く縮むので、許される最大の入力でも階段はおよそ50行しかありません。別の数を変換するときは、同じ4つの列を紙の上で使ってください。表が教えるのは列が何かであって、あなたの数がどうなるかではありません。

公式

17 ÷ 2 = 8余り1 → 8 ÷ 2 = 4余り0 → 4 ÷ 2 = 2余り0 → 2 ÷ 2 = 1余り0 → 1 ÷ 2 = 0余り1 ⇒ 17 = 「10001」 = 16 + 1

17
変換する整数で、10を基数として書かれています。整数でなければなりません。小数点や桁区切りは、丸めて消すのではなく拒否します。この一群のページは全体を通して整数で動くからです
÷ 2
繰り返される段です。2は変換先の基数なので、各回は2がいくつ入るかを尋ね、そのとき余った分が、まさにその位に入る桁になります
商
次の回へ引き継がれる部分です。各回は商と余りに分かれ、商が0になったところで処理は止まります。それがこれ以上上の位の値は要らないという合図です
余り
その回が生み出す桁です。2で割ったときに残るのは0か1しかありえないので、答えは2進数の桁になり、ほかの記号の組にはなりません
⇒ 「10001」
下から組み立てた桁です。最初に見つかった余りが右端の桁で、最後に見つかったものが左端になります。この方法でいちばん逆にしやすい段がここです
16 + 1
答えを2進数の位の値として読み返したものです。「10001」は16と1の位にだけ1が立っているので、それを足すと17に戻ります。これがこのページが印字する点検で、2進数の位の値を足したものがその数だから成り立ちます
53ビット
答えの長さの上限です。2進数で53桁、10進数では9007199254740991にあたります。その幅を超えると、機械は隣り合う整数を離して保持できません。だから大きな入力は、正しく見えるだけの何かに変換するのではなく拒否します

数を2を基数として書くことは、機械自身の表記を手で作らなければならないときにいつも出てきます。いくつかの小さな値を1つの整数に詰めるには、それぞれの値がどのビットを占めるかを求めなければならず、それはその値を2進数で持つことから始まります。色のチャンネル、パーミッションフラグの組、設定レジスタの中のビットフィールド。データシートを読む人は反対側から同じ作業に出会います。そこに印字されている範囲やマスクは16進数か2進数で書かれていて、その元になった数は10進数だからです。課題ではこの向きが直接問われるのがふつうで、10進数を2進数に変換して計算過程を示しなさい、という形になります。印字される割り算の階段がまさにその過程で、割り算1回につき1行です。同じ変換が、変換に見えない問いにも答えます。この大きさの値には何ビット要るか、そのすぐ上にある2の累乗はどれか、8ビットのフィールドが256までではなく255までしか数えないのはなぜか。頭の中でやるプログラマは階段ではなく2の累乗に手を伸ばし、入るいちばん大きな累乗を引いては繰り返します。このページの出力はそのやり方も支えます。引き算が成功するたびにその位に1が残り、答えの隣に印字される位の値の和は、その1を足し戻したものです。

計算例

  1. 17を2進数で書く

    1. 17 ÷ 2 = 8、余り1。この1を書き留める
    2. 8 ÷ 2 = 4、余り0
    3. 4 ÷ 2 = 2、余り0
    4. 2 ÷ 2 = 1、余り0
    5. 1 ÷ 2 = 0、余り1。商が0になったので止める
    6. 余りを下から上へ読む:1、0、0、0、1。これが「10001」である

    既定値で、逆順を示す例です。最初に見つかった余りが答えの最後の桁になります。余りを出てきた順に読むと「10001」が逆になり、ここではたまたま逆にしても「10001」のままなので、規則を確かめるのは次の例のほうです。検算すると16 + 1 = 17です。

  2. 1バイト全体を書く:255

    1. 255 ÷ 2 = 127、余り1
    2. 127 ÷ 2 = 63、余り1。以降の回もすべて余りは1になる
    3. 63 → 31 → 15 → 7 → 3 → 1、いずれも余り1
    4. 1 ÷ 2 = 0、余り1。全部で8回である
    5. 1が8つ並ぶ余りを下から読む:「11111111」

    255は8ビットのフィールドが持てる最大の値で、理由はこうです。2進数8桁は2⁸通りの組み合わせを持ち、その最大が「11111111」です。同じ事実の裏側は、256が「100000000」、つまり9桁で、1バイトに収まらない数だということです。位の値の和は物差しを全部足したもので、一度は完全な形で見る価値があります。

  3. 2の累乗、16

    1. 16 ÷ 2 = 8、余り0
    2. 8 ÷ 2 = 4、余り0
    3. 4 ÷ 2 = 2、余り0
    4. 2 ÷ 2 = 1、余り0
    5. 1 ÷ 2 = 0、余り1
    6. 下から読む:1が1つでそのあと0が4つ、つまり「10000」である

    2の累乗は余り1をちょうど1回だけ出してから止まるので、位の値の和は1項だけに縮みます。これが見分けるべき形です。2の累乗はどれも2進数では1が1つでそのあと0が続く形になり、だから2の累乗がフィールド幅やページサイズやバッファ容量の自然な単位になるのです。

  4. 先頭の0は値を変えない

    1. 入力の先頭の0は10進数の前に座っていて、何も足さない
    2. 変換は最初の例とまったく同じく17に対して行われる
    3. どちらの出力も、あちらと一言一句同じものになる

    入力側で先頭の0を受け付けるのは、10進数が埋められた状態でどこかから貼り付けられることが多いからで、しかも何も変わりません。0の100の位はやはり0の100の位です。反対側も同じで、値を意図して固定幅に埋めることがあります。8ビットのフィールドの「00010001」は「10001」と同じ数で、このページはどちらも受け付けます。

適用限界

このページは整数だけを変換します。小数点は丸めるのではなく拒否するので、17.5は変換できません。小数を読むには何桁見せるか、最後の1桁をどう丸めるかという2つ目の規則が要り、この一群のどのページもその線を同じ場所に引いています。桁区切りも拒否されます。1,500ではなく「1500」と書いてください。コンマはいくつかの言語では小数点として読まれ、2つの読みの間で推測するのは尋ねるより悪いことです。入力は最大9007199254740991で、2進数では53桁にあたります。それより大きな値は機械が正確に保持できず、答えに見える何かへ変換するのではなくメッセージを付けて拒否します。先頭の0と前についたマイナス記号はどちらも受け付けます。このページは17についての2で割る階段を下の表に印字します。表は固定で、打ち込んだ数には従いません。パネルはあなたの数に答え、表は方法を示します。反対の向き、つまり2進数を10進数として読み返すのは別のページで、このページは結果に対して計算をしません。

よくある質問

10進数を2進数へ手で変換するにはどうするのか
2で割り、余りを書き留め、次に商を2で割ることを、商が0になるまで繰り返します。17なら余りは1、0、0、0、1と出ます。各回が右から次の桁を作るので、下から上へ読んで「10001」になります。多くの人が速いと感じる別のやり方は、入るいちばん大きな2の累乗を引いてその位に1を立て、残りで同じことを繰り返すものです。どちらも同じ桁が出ますし、このページが印字する位の値の和は、2つ目の方法が残していくものです。
余りを下から上へ読むのはなぜか
最初の割り算が、いちばん大きい位ではなく、いちばん小さい位についての問いに答えるからです。17を2で割ることは、その中に2がいくつあり何が余るかを尋ねることで、余った分は一の位の桁です。2を作れなかった部分だからです。次の回は同じ問いを2の位について尋ね、そこで余るのが2の位の桁です。だから回は右端の桁から左端の桁へ進み、書かれた順に読むと答えが逆になります。
小数部分のある10進数も変換できるのか
ここではできません。このページは整数を取るので、17.5は丸めるのではなく拒否します。2進数の小数はきちんと定義でき、小数点より右の位は2分の1、4分の1、8分の1…という値になります。しかしそれを受け付けるページは、何桁まで残すか、最後の1桁をどう丸めるかを決めなければなりませんし、この一群のページはどれも整数を変換します。そうすることで境界が全体で同じ場所に保たれ、ある値が片方のページで受け付けられ、もう片方で拒否されることがありません。
ここで変換できるいちばん大きな10進数は何か
9007199254740991で、2進数の形は1が53個並びます。この上限はこのページが決めたものではありません。その幅で機械は隣り合う整数を見分けられなくなるので、それより長い答えは信頼できず、変換するのではなくメッセージを付けて拒否します。同じ上限が、読みのページでは53桁の制限として、16進数では14桁として現れます。1つの制限を3つの基数で書いたものだからです。
ページが2進数と一緒に位の値の和も印字するのはなぜか
答えを信じるしかないものではなく点検できるものにするためです。2進数は求められたものですが、「10001」が正しいのか間違っているのかを見た目では区別できません。それが持つ位の値、ここでは16と1を足すと、出発点の数に戻ります。これは変換を逆に走らせたものです。和が元の数に戻らなければ、その2進数の文字列は間違いだと、別の道具なしに分かります。
繰り返し割るより速い方法はあるのか
よく出会う数についてはあります。2の累乗を「1024」のあたりまで覚えておいて、入るいちばん大きなものを引くのです。17なら16が入って1が残るので、割り算を1つも書かないうちに答えは「10001」です。数がなじみのないものなら階段のほうが優れています。間違えようのない計算だけで済むからです。2で割り続けるのは機械的です。どちらの方法も同じ桁に行き着き、どちらかがより正しいわけではありません。

参考文献

関連する計算ツール