進数変換(2進・8進・10進・16進)

数値を2進数・8進数・10進数・16進数の間で相互変換します。桁数の大きな整数もBigIntで誤差なく変換します。

使い方のヒント

  • 16進数を入力する場合、`0x` などの接頭辞は付けずに数字部分のみ(例: `FF`)を入力してください。大文字・小文字どちらでも認識します。
  • 本ツールはBigIntを使って計算するため、JavaScriptのNumber型では誤差が生じる桁数の大きい整数(2^53を超える値)も正確に変換できます。
  • プログラミングでよく使う16進数のカラーコード(例: `#FF0000`)や、ビット演算の確認に2進数表記を使う場面で活用できます。
  • 8進数はUnix系OSのファイルパーミッション(例: `755`)でよく使われる表記です。10進数・2進数と見比べると権限の意味が理解しやすくなります。

よくある質問

これらはすべて数値を表現する際の「基数(底)」の違いです。10進数は0〜9の10種類の数字を使う私たちに馴染み深い表記、2進数は0と1の2種類のみでコンピューターの内部処理に使われる表記、8進数は0〜7、16進数は0〜9とA〜Fを使う表記で、コンピューター科学や電子工学で頻繁に使われます。

16進数は1桁で4ビット(2進数4桁分)をちょうど表現できるため、2進数のデータを人間が読みやすい形で圧縮して表記できるという利点があります。メモリアドレスやカラーコード(`#RRGGBB`)、文字コードなど、コンピューター内部のビット列を扱う場面で広く使われています。

一般的な電卓やJavaScriptのNumber型を使った変換では、2の53乗(約900兆)を超える整数で誤差が生じることがあります。本ツールはBigInt(桁数無制限の整数型)を使って計算しているため、どれだけ桁数が大きい整数でも誤差なく正確に変換できます。

8進数は主にUnix系OS(Linux・macOS等)のファイルパーミッション表記(例: `chmod 755`)で使われています。各桁が「読み取り(4)・書き込み(2)・実行(1)」の権限の組み合わせを表しており、8進数1桁で所有者・グループ・その他ユーザーそれぞれの権限を簡潔に表現できます。
ツールくん

余談ですが ― なぜコンピューターは2進数で動くのか

コンピューターが2進数(0と1)を基本としているのは、電子回路が「電圧が高い/低い」「スイッチがオン/オフ」という2つの状態を安定して区別しやすいためです。10進数のように10段階の電圧レベルを正確に識別する回路を作るよりも、2つの状態だけを扱う回路の方がノイズに強く、部品も単純にできるという実用上の理由から、現代のほぼすべてのコンピューターが2進数を採用しています。

16進数がプログラミングで重宝される理由は、2進数4桁(0000〜1111)がちょうど16進数1桁(0〜F)に対応するという数学的な性質にあります。例えば1バイト(8ビット)のデータは16進数でちょうど2桁(`00`〜`FF`)で表現でき、2進数で書くと8桁になる情報を人間にとって読みやすい長さに圧縮できます。

8進数は歴史的には、初期のコンピューター(PDP-8等、1960年代)が12ビットや36ビットなど3の倍数のビット幅を採用していた名残から広まったとされ、当時は8進数の方が2進数との対応が扱いやすい場面がありました。その後コンピューターが8ビット・16ビット・32ビット単位(4の倍数)を主流に採用するようになると、8進数より16進数の方が実用上便利になり、現在では16進数が主流になっています。ただしUnixのファイルパーミッションのように、8進数が今も現役で使われている場面も残っています。