進数変換ツール — 2 進数、16 進数、10 進数、8 進数、2〜36 進数

任意の大きさの整数を、2 進数、8 進数、10 進数、16 進数、32 進数、36 進数、そして 2〜36 の任意の進数の間で変換。2 の補数表示付き。

どの欄にも入力できます。接頭辞 0x、0b、0o、先頭のマイナス記号、数字の間のスペース・カンマ・アンダースコアにも対応しています。

16 ビット · 2 バイト(絶対値) · 10 進数で 5 桁

2 の補数(固定幅)

幅ビットパターンHex符号付き符号なし
8 ビット
オーバーフロー、切り捨て
1110 11110xEF-17239
16 ビット1011 1110 1110 11110xBEEF-1665748879
32 ビット0000 0000 0000 0000 1011 1110 1110 11110x0000BEEF4887948879
64 ビット0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1011 1110 1110 11110x000000000000BEEF4887948879

幅の範囲を超える場合、パターンは下位ビットのみになります。これは C、Java、Go で int8_t/int16_t/int32_t/int64_t にキャストしたときと同じ動作です。

すべてブラウザ内で動作します。入力内容が送信・保存されることはありません。 すべての無料ツールを見る.

不具合や改善できそうな点を見つけましたか?いただいたメッセージはすべて読み、すぐに対応します。

この進数変換ツールは、整数を 2 進数、8 進数、10 進数、16 進数、32 進数、36 進数で同時に表示し、さらに 2〜36 の好きな進数にも対応します。どの行も編集でき、16 進数の欄に値を入力すると 2 進数、10 進数などが更新されます。0x や 0b などの接頭辞、マイナス記号、桁の間のスペース・カンマ・アンダースコアもすべて受け付けるので、コードやデータシートからそのまま貼り付けられます。多数の値を一度に変換するには、リストモードに切り替えて 1 行に 1 つずつ数値を貼り付ければ、全進数の表が得られ、コピーや CSV でのダウンロードができます。

数値は任意精度の整数として扱われるので、64 ビットの ID、256 ビットのハッシュ値、300 桁の 10 進数も正確に変換されます。通常の JavaScript の数値で作られたツールでは、9,007,199,254,740,991 を超える値は黙って丸められてしまいます。2 の補数の表は、値が 8、16、32、64 ビットの符号付き・符号なし整数でどのように格納されるかを示し、オーバーフローを警告します。小数は近似的に変換するのではなく、説明付きで受け付けません。多くの 10 進小数には正確な 2 進表現がないからです。

使い方

  1. 数値が書かれている進数の欄に入力します。たとえば 16 進数の欄に 0xBEEF、2 進数の欄に 1011 です。
  2. ほかの欄でほかの進数を確認し、ボタンでいずれもコピーできます。
  3. 珍しい進数は「任意の基数」メニューで選び、その欄に入力します。
  4. 2 の補数の表で、固定幅でのビットパターンや、負の数が 16 進数でどう見えるかを確認します。
  5. コード用にそのままの文字列が必要なら、桁区切りをオフにします。

よくある質問

数値のリストを一度に変換できますか?

はい。「数値のリスト(一括)」を選び、最大 2,000 個の数値を 1 行に 1 つずつ貼り付け、入力の進数を選びます(「自動」のままにすると 0x、0b、0o の接頭辞を読み取ります)。各行が 10 進数、2 進数、8 進数、16 進数、32 進数、36 進数、そして選んだ追加の進数 1 つに変換されます。解析できない行にはその行のエラーが表示され、残りはそのまま変換されます。表をコピーするか、CSV でダウンロードします。

2 進数を 10 進数に変換するには?

右端を 0 として数えた位置について、各桁の 2 進数字に 2 のその位置乗を掛け、結果を合計します。1011 なら 1×8 + 0×4 + 1×2 + 1×1 = 11 です。または、上の 2 進数の欄に入力して 10 進数の欄を読み取ります。

16 進数を 10 進数に変換するには?

16 進数の各桁は右隣の桁の 16 倍の重みを持ち、A〜F は 10〜15 を表します。0x2F なら 2×16 + 15 = 47 です。また、16 進数の 1 桁はちょうど 2 進数の 4 桁に対応する(F = 1111)ため、16 進数は 2 進数をコンパクトに書く方法として使われています。

2 の補数とは何ですか?

コンピューターが負の整数を格納する方法です。n ビットの整数では、負の数 −x は 2^n − x として格納されます。したがって 8 ビットの −1 は 11111111(0xFF)、−128 は 10000000 です。同じビットパターンが符号なしなら 255、符号付きなら −1 と読め、表には両方が表示されます。利点は、符号付きでも符号なしでも足し算と引き算が同じ方法で行えることです。

大きな数値で変換ツールの結果がおかしくなるのはなぜですか?

ほとんどの変換ツールは JavaScript の数値を使っており、これは 64 ビットの浮動小数点数で、整数を正確に表せるのは 2^53 − 1(9,007,199,254,740,991)までです。それを超えると桁が黙って丸められるので、64 ビットのデータベース ID や Twitter/X の Snowflake ID は誤って変換されます。この変換ツールはサイズの制限がない BigInt を使っています。

0.1 のような小数を 2 進数に変換できますか?

ここでは意図的に対応していません。10 進数の 0.1 は 2 進数では循環小数(0.000110011…)になるので、有限の答えはどれも近似です。そしてこの丸めこそが、ほとんどのプログラミング言語で 0.1 + 0.2 が 0.3 にならない理由です。このツールは整数を正確に変換します。小数を扱うには、まず整数に換算してください(たとえばドルではなくセントで保存する)。

各進数が使われる場面

• 2 進数(基数 2):ビットフラグ、ネットマスク、ハードウェアレジスタ、権限のビットフィールド。

• 8 進数(基数 8):Unix のファイル権限。8 進数の 1 桁がちょうど 3 ビット(所有者、グループ、その他)に当たるので、755 は rwxr-xr-x を意味します。

• 16 進数(基数 16):メモリアドレス、カラーコード(#244B3F)、バイトダンプ、ハッシュ、MAC アドレス、Unicode のコードポイント(U+1F332)。

• 32 進数(0〜9、A〜V):コンパクトな識別子。なお、TOTP のシークレットで使われる RFC 4648 の Base32 は A〜Z、2〜7 のアルファベットを使うバイトのエンコード方式で、この進数とは別物です。

• 36 進数(0〜9、A〜Z):大文字・小文字を区別しない英数字で最もコンパクトな表現で、短い ID や URL 短縮サービスに使われます。JavaScript の Number.prototype.toString(36) でこの形式になります。

固定幅の整数とオーバーフロー

プログラミング言語は整数を固定幅で格納します。int8/uint8(1 バイト)、int16、int32、int64 です。符号付き n ビット整数の範囲は −2^(n−1) から 2^(n−1) − 1 なので、int8 は −128〜127、int32 は −2,147,483,648〜2,147,483,647 です。符号なしの場合は 0〜2^n − 1 です。

値が収まらない場合、ほとんどの言語は下位 n ビットだけを残します。そのため、int8 に格納した 200 は −56 として読み出され、32 ビット int の 2,147,483,647 + 1 は −2,147,483,648 になります。ここの 2 の補数の表はその切り詰められたパターンを示し、行にオーバーフローの印を付けるので、C、Java、Go、Rust でのキャストの結果を簡単に予測できます。

関連する無料ツール

  • カラーピッカー&変換 — 画面上のどこからでも色を取得したり、HEX、RGB、HSL を瞬時に相互変換したりできます。
  • ハッシュ生成 — テキストやファイルを MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 でハッシュ化し、チェックサムを検証したり HMAC を計算したりできます。ファイルは端末の外に出ません。
  • Unix タイムスタンプ変換 — エポックの秒、ミリ秒、マイクロ秒、ナノ秒を任意のタイムゾーンの日時に変換、その逆も。現在時刻の表示、一括変換、コードスニペット付き。
  • オンライン電卓 — キーボードやテンキーで操作できる、iPhone 風のシンプルな電卓。パーセント、符号切り替え、履歴、コピーに対応。広告なし、インストール不要です。