進数変換計算

数値を2進数、8進数、10進数、16進数、そして2から36までの任意の基数に変換 — 巨大な値でも正確です。

1,165回閲覧

基数変換はどのように機能しますか?

基数bの数値体系は0からb−1までの数字だけを使い、各桁はbの累乗の値を持ちます — 10進数と同じ考え方で、使う記号の数が違うだけです。10進数から別の基数へ変換するには除算・剰余法を使います:数を目的の基数で繰り返し割り、その都度の余りを記録し、最後に余りを逆順に読みます。10進数の100を7進数に変換する場合:100÷7 = 14 余り2、14÷7 = 2 余り0、2÷7 = 0 余り2 — 余りを下から上に読むと7進数で202になります。

任意の基数から10進数へ変換するにはその逆、位取りの値の合計法を使います:各桁を、その桁の位(右から0として数える)に応じた基数の累乗と掛け合わせ、結果を合計します。7進数の202は、2×7² + 0×7¹ + 2×7⁰ = 98 + 0 + 2 = 100として元に戻ります。このツールは、2から36までの任意の2つの基数の間で両方向を同時に処理し、多倍長整数演算を使うため、非常に長い数値でも結果は正確なままです — 電卓のような15桁の丸めは発生しません。

この2つの方法は、10進数を介さない基数の組み合わせにも一般化できます:たとえば5進数から12進数へ直接変換する場合、通常はまず中間段階として10進数を経由します(5進数 → 10進数は位取りの値の合計法で、10進数 → 12進数は除算・剰余法で)。このツールは、2から36までの35通りの基数の組み合わせすべてについて、この処理を裏側で自動的に行っています。

知っておくべきこと

  • 文字は数字を10より先へ拡張します:ある基数が10種類を超える記号を必要とする場合、数字が尽きたところから文字を借用します — A=10、B=11、このツールが対応する最大の基数である36進数ではZ=35までです。入力は大文字・小文字を区別しません。
  • Hexが広く使われるのは、2進数ときれいに対応するからです:各16進数の桁はちょうど4ビットに対応するため、2進数↔16進数の変換は4桁ごとの単純な対応表の参照になります。一方、2進数↔10進数の変換は完全な位取り計算が必要です。
  • 8進数(基数8)は2進数を3ビットずつまとめます:初期のコンピューティングで一般的でした(Unixのファイル権限は今も755のように使います)。これは、2進数の3桁がちょうど8進数の1桁に対応するためです。
  • 先頭のゼロと符号:このコンバーターは符号なしの絶対値を扱います — 負の数は明示的なマイナス記号を付けて入力する必要があります。10進数を超える基数体系には、そのための専用の記号が用意されていないためです。
  • 2未満または36を超える基数は意図的にサポートしていません:1進数(単項)には意味のある位取りの桁が存在せず、36を超えると、より大きな桁の値を曖昧さなく表すための、大文字・小文字を区別しない1文字の記号がラテンアルファベットと数字の中にもう残っていません。

よくある質問

プログラマーはなぜ16進数を使うのですか?

16進数の1桁はちょうど4ビットを表すため、1バイトは常に16進数2桁です(FF = 255 = 11111111)。バイナリデータ、メモリアドレス、カラーコードをコンパクトで読みやすく表現できます。

2進数の1010は10進数でいくつですか?

1010₂ = 1×8 + 0×4 + 1×2 + 0×1 = 10。右から左に位を読むと、それぞれが次の2の累乗を表します — これが、任意の基数を10進数に変換する際に使われる位取りの値の合計法です。

10より大きい基数ではどの文字が有効ですか?

数字が終わったところから文字が続きます:A=10、B=11 … Z=35。したがって36進数はすべての数字とすべての文字を使用し、入力は大文字・小文字を区別しません。

10進数の数値を手作業で別の基数に変換するにはどうすればよいですか?

除算・剰余法を使います:目的の基数で数を繰り返し割り、その都度の余りを記録し、余りを逆順(最後から最初へ)に読みます。100を7進数に変換すると余りは2、0、2になります — 下から上に読むとそれが202です。

通常の電卓は、なぜ他の基数での非常に大きな数値で精度を失うのですか?

標準的な電卓は固定精度の浮動小数点数を使用しており、おおよそ15〜17桁で丸められます。このツールは代わりに多倍長整数演算を使用するため、数十桁にわたる場合でも丸め誤差なく、あらゆる長さの数値を正確に変換します — これは暗号技術や競技プログラミングの問題がしばしば要求する種類の精度です。

コメント

まだコメントはありません — 最初のコメントを書いてみましょう!

関連ツール