進数変換について
CPU やメモリダンプは二進数、デバッガや CSS 色コードは十六進数が日常語です。2~36 進の整数を bigint で正確に変換し、JavaScript の number による丸めを避けます。
どの進数も位取り(positional)です。各桁は基数の累乗を掛け合わせて足し合わせます。16 進の A は 10 を表し、8 進の各桁は 0~7 だけ。16 進入力の 0x プレフィックスは任意です。
できること
位取り記法
値 = Σ(桁 × 基数^位置)。十進 255 では右端 5 は 5×10⁰、真ん中 5 は 5×10¹、左 2 は 2×10²。同じ整数でも進数ごとに見た目は違います。
2~36 進のルール
- 桁 0~9 は値 0~9(必要な進数で使用)。
- 基数が 10 超のとき a~z が 10~35(大文字小文字不問)。
- 十六進は 0x / 0X 付きでも可。変換時は数字部分のみ扱います。
- 源進数と文字が一致している必要あり(8 進に 8 や 9 は不可)。
二進数 ↔ 十六進(ニブル)
- 二進数は右から 4 ビットずつ区切り、各ブロックが 1 桁の hex(0~F)に対応。
- 例:1111 1111 → FF(十進 255、1 バイト)。
- 左端が 4 ビット未満なら 0 で埋める(1010₂ = A₁₆)。
- ダンプを十進経由せずに読むときに便利です。
大整数
コア変換は bigint 演算のため、長いビット列・64 ビットマスク・大きな hex 定数(スノーフレーク ID 等)も正確です。
よくある使い方
二進数を十六進に
源 2・先 16 に設定しビット列を貼り付け。例 11111111 → FF。2→10→16 とニブル手算の両方で照合できます。
十進と二進の往復
十→二:源 10・先 2(42 → 101010)。8/16/32 ビット幅に揃えるときは二進の左に 0 を足します。
chmod・色・ビットマスク
755 は八進であり十進 755 ではありません。RGB 255 と hex FF は同じ 1 バイト。ドキュメントのマスク定数を十進に直してテストに書く。
学習・試験の確認
除基取余の手算や 0xDEAD の十進値を、ツールで答え合わせしてから紙の計算を練習する。
よくある質問
- オンラインで進数変換するには?
- 源進数と先進数(2~36)を選び、その進数表記の整数を入力して変換します。日常は 2/8/10/16 が中心です。
- 二進数から十六進数へは?
- 源 2・先 16 で直接変換するか、右から 4 ビットずつ 0~F に対応。11111111 → FF(十進 255)。
- 十進と二進の互換は?
- 十→二:255 → 11111111。二→十:ビット列を源 2・先 10 に。小数は非対応、整数のみです。
- 八進を十進や hex に?
- 八進の桁は 0~7 のみ。377₈ = 255₁₀ = FF₁₆。Unix 権限 755 は八進です。
- プログラムで十六進は何に使う?
- 4 ビットを 1 文字に圧縮。アドレス、#RRGGBB、MAC、ハッシュ表示など。C/JS では 0x プレフィックスが一般的です。
- 11111111(二進)が 255 になる理由は?
- 2 の累乗の和:1+2+4+8+16+32+64+128=255。8 ビット=1 バイト=FF(hex)。
- 小数は変換できる?
- いいえ、整数のみ。分数や IEEE 浮動小数点は別アルゴリズムが必要です。
- 言語の結果と違うときは?
- 源進数、先頭ゼロ、C の 012 八進、parseInt の radix 引数などを確認してください。
- 36 進と Base64 は同じ?
- 36 進は 0~9 と a~z で 1 つの整数を表す位取り記法。Base64 は任意バイトの転送用エンコードで別物です。
進数対照例
255(十進)二進 11111111 · 八進 377 · hex FF · 1 バイト10(十進)二進 1010 · hex A16(十進)二進 10000 · hex 10 · 八進 200xFF十進 255 · 8 ビット全 1 マスク377(八進)十進 255 · FF と同じ 1 バイト101010(二進)十進 42chmod 755(八進)十進 755 ではない — 八進として読む