進数変換(途中式つき)

数を入力し、何進数の数か、何進数に変換するかを選んでください。非常に大きな数も正確に変換し、循環小数も判定します。割り算の繰り返し、位取りの足し算、掛け算による小数の変換まで、途中の計算をすべて表示します。

例:255、−42、0.1、FF、0x1F(接頭辞 0x・0b・0o も使えます)
割り切れない結果はこの桁数で打ち切ります
負の整数をビットパターンで表示します。2・8・16進数で入力した値はビットパターンとして読み取ります
入力内容はこのブラウザーにのみ保存されます。

結果

変換結果
FF
2進数
1111 1111
8進数
377
10進数
255
16進数
FF
途中式
  • 整数部分:16で割り続け、余りを順に書き出します:
  • 255 ÷ 16 = 15 余り 15 (F)
  • 15 ÷ 16 = 0 余り 15 (F)
  • 余りを下から上へ読みます:FF₁₆

計算方法

n進数(位取り記数法)のしくみ

b進数では、各桁の値は数字 × b位です。10進数の255は2 × 10² + 5 × 10¹ + 5 × 10⁰を意味します。2進数は0と1だけ、8進数は0〜7、16進数は0〜9とA〜F(A = 10 … F = 15)を使います。10より大きい基数ではアルファベットを借りて使い、36進数ではZ = 35までになります。

10進数2進数8進数16進数
10101012A
15111117F
100110 010014464
2551111 1111377FF

n進数から10進数へ:各桁の重みを足す

各桁に基数のべき乗を掛けて合計します:FF₁₆ = 15 × 16¹ + 15 × 16⁰ = 240 + 15 = 255。小数点以下の桁はマイナスのべき乗になり、0.1₂ = 1 × 2⁻¹ = 0.5です。

10進数からn進数へ:割り算を繰り返す

商が0になるまで変換先の基数で割り続け、余りを書き出します。余りを下から上へ読んだものが答えです。例:13を2進数に変換するやり方:

下から読んで13 = 1101₂です。

小数の変換:掛け算と循環小数

小数部分に基数を掛け、整数部分を次の桁とし、残った小数部分で同じ計算を続けます。0.1を2進数に変換すると:0.1 × 2 = 0.2 → 0、0.4 → 0、0.8 → 0、1.6 → 1、1.2 → 1、そして再び0.4が現れます。結果は0.1 = 0.0(0011)₂という循環小数で、コンピュータが0.1を正確に保存できない理由です。

割り切れるかどうかは、約分した分母だけで決まります。分母のすべての素因数が基数を割り切れば、有限桁で終わります。1/2は2進数で割り切れますが(0.1₂)、1/10は5が2を割り切らないため割り切れません。このツールは浮動小数点ではなく整数(BigInt)で計算するため、循環節を正確に判定します。

負の数と2の補数

紙の上では、負の数にはマイナス記号を付けるだけです:−255 = −FF₁₆。コンピュータ内部では2の補数で表します。絶対値を2進数で書き、全ビットを反転し、1を足します。8ビットの−1は、0000 0001 → 1111 1110 → 1111 1111です。nビットで表せる範囲は−2ⁿ⁻¹〜2ⁿ⁻¹ − 1で、8ビットなら−128〜127。128はオーバーフローになります。

よくある質問

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

商が0になるまで2で割り続け、余りを書き出します。余りを下から上へ読んだものが2進数です:13 → 6 余り1、3 余り0、1 余り1、0 余り1 → 1101。

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

各桁に2のべき乗(右端が2⁰)を掛けて合計します:1101₂ = 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 13。

2進数と16進数の変換方法は?

16 = 2⁴なので、2進数を右から4桁ずつ区切り、それぞれを16進数1桁に置き換えます:1111 1111 = F F = FF。逆に16進数の各桁を4桁の2進数に直せば2進数に戻ります。8進数は8 = 2³なので3桁ずつ区切ります。

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

各桁に16のべき乗(右端が16⁰)を掛けて合計します。A〜Fは10〜15です:2F₁₆ = 2 × 16 + 15 = 47。

小数の進数変換のやり方は?

10進数の小数をn進数にするには、小数部分に基数を掛け、整数部分を1桁ずつ取り出します。0.1は2進数で0.000110011…₂と無限に続く循環小数になり、多くのプログラミング言語で0.1 + 0.2がちょうど0.3にならない原因です。

2の補数とは?

コンピュータが負の整数を表すための標準的な方法です。絶対値を2進数で書き、全ビットを反転して1を足します。8ビットの−1は1111 1111(FF)になり、8ビットで表せる範囲は−128〜127です。

出典・根拠

更新日:

関連ツール