進数

計算結果を比較する

ダウンロード

この計算の入力内容と結果に加え、比較した追加の計算もすべて含まれます。

同じ値を2進数・8進数・10進数・16進数で書き直す

数の基数(「底」)とは、次の位に繰り上がる前に数体系がいくつの異なる桁を使うかです — 10進数は10(0〜9)、2進数は2(0〜1)、8進数は8(0〜7)、16進数は16(0〜9の後にA〜F)を使用します。これら4つの基数のいずれかで整数を入力すると、この計算機は同じ値を4つすべてで書いたものを一度に表示します。

2進数はコンピューターがすべての値を内部で表す方法です(各桁が1「ビット」)。16進数はプログラミングにおける2進数の一般的な省略表記です(各16進数の桁がちょうど4つの2進数の桁を表すため、読み書きがはるかにコンパクトです)。8進数は古いUnixのファイル権限や一部の低レベルの文脈で使われます。10進数は日常的な基数10のシステムです。

計算式

すべての位取り記数法は同じように機能します: 各桁はその位の累乗の基数を掛けられ、それが合計されます:

=i=0ndi×基数i\vA{\text{値}} = \sum_{i=0}^{n} d_i \times \vB{\text{基数}}^i

ここでdid_iは位置iiの桁です(一番右の桁を0として数えます)。別の基数変換するには、10進数の値を新しい基数で繰り返し割り、各余りを記録します — 上の合計の逆です。

計算例

2進数11111111を他の3つの基数に変換する場合:

  1. 右から左に読み、各1がその位の値を寄与します: 27+26+25+24+23+22+21+20=2552^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 = 255
  2. 10進数: 255
  3. 8進数: 255を8で繰り返し割ると(255 ÷ 8 = 31余り7、31 ÷ 8 = 3余り7、3 ÷ 8 = 0余り3)、余りを下から上に読んで377
  4. 16進数: 255 ÷ 16 = 15余り15、15 ÷ 16 = 0余り15 — 両方の余りが15(16進数でF)であり、FFが得られます。

考慮すべき重要なポイント

  • 1バイト(8ビット)は正確に256個の異なる値 — 10進数で0から255、16進数で00からFF — を表現できます。 これが、255/FFがコンピューティングにおいてよく参照される値である理由です — 1バイトが保持できる最大値であり、RGBカラーチャンネル(チャンネルあたり0〜255)からネットワークやファイル形式まで、あらゆる場所に現れます。
  • 8進数は、主に古いコンピューターのワードサイズのために、今日よりも歴史的にはるかに一般的でした。 8進数(基数8)は3つの2進数の桁のグループにきれいに対応するため、3ビットで割り切れるワードサイズを中心に構築されたコンピューターに適していました — 現代のコンピューティングは、ほとんどの最新ハードウェアが4や8で割り切れるワードサイズを使用しているため、(4ビットのグループに対応する)16進数に大きく移行していますが、8進数は今でもUnixのファイル権限表記(例: chmod 755)のような特定の文脈で見られます。
  • プログラマーによくある間違いは、文脈だけで数の基数を混同することです。 数字「10」は基数によって全く異なる値を意味します — 10進数では10、2進数では2、8進数では8、16進数では16です — これが、プログラミング言語が通常、意図する基数についての曖昧さをなくすために明示的な接頭辞(16進数の0xや2進数の0bなど)を要求する理由です。
  • 理論上、あらゆる整数はこの4つに限らずどんな基数でも表現できます。 2進数、8進数、10進数、16進数は、コンピューティングと日常の数学で最も一般的に実際に使われている4つの基数に過ぎません — この計算機が使うのと同じ位取り記数法の原理は、基数3、基数20、基数60(時間や角度が伝統的に分割される基準)など、どんな基数にも拡張できます。

よくある間違い

  • 接頭辞のない混合基数の数をデフォルトで10進数として読むこと。 「10」は10進数では十を意味しますが、2進数ではわずか二を意味します — 計算する前に、その数がどの基数で書かれているか必ず確認(または明示)しましょう。
  • 先頭のゼロが値を変えると考えること。 10進数と同様、2進数の001111と同じ値です — 先頭のゼロは固定幅の表示(バイト全体を示す場合など)にのみ意味があり、数の実際の値には関係ありません。
  • 9より大きい16進数の桁が文字を使うことを忘れること、2桁の数字ではありません。 16進数の十は10ではなくAと書きます — 16進数で10と書くと実際には10進数の十六を意味し、大きな誤差の原因になりがちです。
  • 負の数を直接変換しようとすること。 上記のFAQで述べた通り、負の2進数/16進数の値は選択したビット幅と2の補数の慣習に依存します — 非負の整数のような単一の明確な変換方法はありません。

知っておくと役立つこと

  • 任意の数値ではなくネットワークアドレスを扱っていますか?IPサブネット計算機は同じ2進数/10進数の関係をIPv4アドレスに特化して適用します。
  • コンパクトな形で非常に大きい、または非常に小さい10進数が必要ですか?指数表記計算機はその種の変換を代わりに扱います。
  • もっと古い、位取りに関連した数体系に興味がありますか?ローマ数字計算機は、まったく異なる(非位取りの)方式を使うローマ数字との変換を行います。

出典: 標準的な位取り記数法の変換.

よくある質問

数の基数(底)とは何ですか?

数の基数とは、次の位に繰り上がる前に数体系がいくつの異なる桁を使うかです。10進数(基数10)は数字0〜9を使い、2進数(基数2)は0と1だけを使い、8進数(基数8)は0〜7を使い、16進数(基数16)は0〜9の後に文字A〜Fを使って10〜15を表します。

なぜコンピューターは2進数を使うのですか?

コンピューターのハードウェアは、完全にオンかオフかのどちらかしかないスイッチから作られており、これは2進数の2つの桁(1と0)に自然に対応します。プログラマーは通常10進数や16進数のようなより人間に読みやすい基数で作業しますが、コンピューターが保存・処理するすべての値は最終的に2進数で表されます。

なぜプログラミングでは2進数の代わりに16進数が使われるのですか?

各16進数の桁はちょうど4つの2進数の桁(ビット)を表すため、16進数は同じ値を表しながら同等の2進数の約4分の1の長さになります — 人にとって長い1と0の文字列よりはるかに読みやすく、入力しやすく、比較しやすいです。

この計算機は負の数を扱えますか?

いいえ — 2進数や16進数で負の数を表すには、固定のビット幅と2の補数の慣習を選ぶ必要があり、これは文脈(8ビット、16ビット、32ビットなど)によって異なります。この計算機は変換が曖昧でない非負の整数に範囲を限定しています。

年齢を確認してください

アカウントを作成するには、生まれた月と年を教えてください。