Menu
日本語

N進数変換

2進数・8進数・10進数・16進数の間で数値を変換。

最終更新

ビット6
  • 2進数2進法
  • 8進数8進法
  • 10進数10進法
  • 16進数16進法

Number Base Converter(基数変換ツール)とは?

基数変換ツールは、2進数・8進数・10進数・16進数といった異なる記数法の間で数値を書き換えるためのツールです。ビットマスクの読み解き、カラーコードのデバッグ、プロトコルパケットのフラグ解析、ハードウェアレジスタの確認、CSSやアセンブリ・暗号処理での16進⇔10進の変換まで、開発の現場で意外と出番が多い作業です。

基数を変えても数値そのものは変わりません。変わるのは「表記」だけです。10進数の 255 は16進数なら 0xFF、2進数なら 0b11111111、8進数なら 0o377。同じ値を4通りの方法で書いているだけ、ということになります。

良いツールなら、巨大な数値も精度を落とさずに扱えるべきです。JavaScript標準の parseInt は 2⁵³ を超える値を黙って丸めてしまうため、64ビットレジスタの値・ID・タイムスタンプなどで地味なバグの原因になります。このツールは内部で BigInt を使っているので、256ビットの16進数値でもラウンドトリップで完全に元に戻ります。

基数変換を通して身につくこと

  • 2進数は2種類の数字(0, 1)、8進数は8種類、10進数は10種類、16進数は16種類(0–9, a–f)の数字を使う。
  • 2進数の1桁が1ビット。4ビット = 16進数1桁、8ビット = 1バイト = 16進数2桁。
  • 16進数は2進数をコンパクトに書くための表記。0xCAFE は2進数で 1100 1010 1111 1110。圧倒的に読みやすい。

基数変換のやり方(ステップ順)

  1. 入力する基数を選ぶ

    手元の数値に合わせて、2進数・8進数・10進数・16進数のいずれかを選びます。

  2. 値を入力する

    16進数は ff でも 0xff でもOK。2進数も 1010 でも 0b1010 でも構いません。プレフィックスは自動で取り除かれます。

  3. 4つの基数の表記を一度に確認

    同じ数値の4種類の表記が瞬時に表示されます。任意の表記をクリックすればコピーできます。

  4. 桁区切りで読みやすくする

    2進数は4ビット区切り(1100 1010 1111 1110)、16進数は2文字区切り(CA FE)にできます。ビットフィールドやメモリダンプを目視確認するときに便利です。

基数の早見表

4つの基数でよく出てくる代表値をまとめました。下の表記の文法は、JavaScriptの BigInt数値リテラルのルールに従います。

10進数2進数8進数16進数
0000
1111
81000108
10101012A
16100002010
321000004020
64100000010040
100110010014464
1281000000020080
25511111111377FF
256100000000400100
1024100000000002000400
655351111111111111111177777FFFF

試してみたい変換例

RGBカラーコード

16進数
color: #ff8800;
10進数
color: rgb(255, 136, 0);

16進数2桁が1チャンネル分の1バイト(0–255)に対応します。ff = 255、88 = 136、00 = 0。

パーミッションビットマスクを読む

10進数

5

2進数

0b101

ビットの読み方

ビット0(read)が立っていて、ビット2(execute)も立っている。ビット1(write)は0。つまり read + execute の権限を表しています。

Unixのファイルモード(chmod)、フィーチャーフラグ、プロトコルパケットなどは、複数のbool値を1つの整数のビットに詰め込んで表現します。2進数表示にすると、その構造がそのまま見えます。

BigIntで精度を保った変換

16進数(巨大)

0xFFFFFFFFFFFFFFFF

10進数

18446744073709551615

符号なし64ビット整数の最大値です。JavaScriptの通常の parseInt では精度が落ちますが、BigIntならきれいに変換できます。

進数変換でよくあるミス

  • 「数値そのもの」と「リテラル表記」を混同してしまう。0x1010 は見た目は似ていますが、それぞれ16と10です。コード中では基数プレフィックスを必ず付けましょう。
  • 生のメモリダンプで16進数を左から右に読んでしまい、バイトオーダー(エンディアン)を考慮し忘れる。
  • JavaScriptで 2⁵³ を超える値に parseInt(big, 16) を使ってしまう。代わりに BigInt('0x' + hex) を使ってください。

Number Base Converter よくある質問

2進数を10進数に変換するには?
右端から順に、各ビットに対応する2のべき乗を掛けて足します。1010 なら 1·8 + 0·4 + 1·2 + 0·1 = 10。手計算が面倒なときはこの基数変換ツールに貼り付ければ即答が出ます。
10進数を16進数に変換するには?
10進数を16で割り続け、各ステップの余り(0〜15、10〜15はA〜F)をメモします。下から上に読み上げれば16進表記の完成です。255 ÷ 16 = 15 余り 15FF
16進数はどんな場面で使う?
2進数をコンパクトかつ読みやすく表したい場面ならどこでも使われます。カラーコード(#ff8800)、メモリアドレス、ファイルダンプ、MACアドレス、ハッシュ値、低レイヤーのシステム全般などです。
8進数と16進数の違いは?
8進数は基数が8(数字は0〜7)、16進数は基数が16(0〜9 と A〜F)です。8進数は今ではあまり見かけませんが、Unixのファイル権限(0755)やC系言語の数値リテラルの一部にはまだ残っています。
なぜ2進数はあんなに桁数が増えるの?
1桁増えるごとに表現できる値の数が2倍になるからです。8ビットで256通り、16ビットで65,536通り、32ビットなら40億通り超。だからこそビットマスクは小さな数値の中に大量の情報を詰め込めるわけです。

詳しく見る

その他の開発者ツール

Coddyでコードを学ぼう

始める