ビット
計算過程を表示
8進数の各桁は8のべき乗で、755 = 7 × 64 + 5 × 8 + 5 = 493です。Unixのパーミッションでは8進数1桁が読み・書き・実行の3ビットに当たり、755はrwxr-xr-x、644はrw-r--r--です。
使い方
- 2進数・8進数・10進数・16進数、または2〜36の任意の基数のどれかに入力すると、ほかの欄がすぐに更新されます。
- 各欄の横のコピーボタンで値をコピーできます。0x・0b・0oの接頭辞、スペースやアンダースコアも入力できます。
- 「ビット」で8/16/32/64ビットを選ぶと、2の補数表現と符号付き・符号なしの値が表示されます。ビットをタップすると反転します。
- 「計算過程を表示」で途中の計算を確認できます。「テキスト」では文字列と2進数・16進数コードを相互に変換します。
- 桁数に上限はなく、2⁵³を超える100桁の数でも正確に変換できます。
- 小数にも対応しています(小数点はピリオド)。10進数の0.1は2進数で0.0001100110011…となり、長い小数や循環小数は64桁で打ち切ります。
- 負の数は各欄ではマイナス記号付き、ビット表示では2の補数で表示します。
- テキストモードはUTF-8を使うため、日本語の文字は1文字3バイト、絵文字は4バイトになります。
位取り記数法のしくみ
b進数では各桁にbのべき乗を掛けます。10進数の2024は2×10³ + 0×10² + 2×10¹ + 4×10⁰、2進数の1011は1×8 + 0×4 + 1×2 + 1×1 = 11です。10より大きい基数ではアルファベットを使い、16進数は0〜9とA〜F(A = 10、F = 15)で表します。
10進数をb進数に直すには、bで割り続けて余りを下から順に読みます。逆に戻すときは、各桁にその位の重みを掛けて足し合わせます。
16進数と8進数が使われる理由
16進数の1桁はちょうど4ビット、8進数の1桁は3ビットに当たるので、長い2進数を計算なしで短く書けます。1101 1110 1010 1101は16進数でDEADです。16進数はカラーコード(#FF8800)やメモリアドレス、8進数はUnixのパーミッション(755など)でよく見かけます。
2の補数と範囲
コンピューターは負の整数を2の補数で表します。正の値のビットを反転して1を足すので、8ビットの−42は11010110(0xD6)です。符号付き8ビットは−128〜127、16ビットは−32,768〜32,767の範囲です。このツールは任意精度の整数で計算するため、通常のJavaScriptの数値にある2⁵³の制限がありません。
よくある質問
2進数を10進数に変換するには?
各ビットに2のべき乗を掛けて足します。101101 = 32 + 8 + 4 + 1 = 45です。計算過程にこの位の重みが表示されます。
10進数を2進数に変換するには?
2で割り続けて余りを書き出し、下から読みます。13 → 6 余り1 → 3 余り0 → 1 余り1 → 0 余り1なので、13 = 1101です。
16進数のFFは10進数でいくつ?
15 × 16 + 15 = 255で、1バイトで表せる最大の値です。
数字の前の0xは何を意味しますか?
C、JavaScript、Pythonなど多くの言語で16進数を表す接頭辞で、0x1Fは31です。同様に0bは2進数、0oは8進数を表し、このツールは3つとも入力できます。
負の数を2進数で書くには?
一般に2の補数を使います。選んだビット幅で正の値を書き、全ビットを反転して1を足します。8ビットでは−1が11111111、−128が10000000です。
小数も変換できますか?
できます。0.5は2進数で0.1、0.625は0.101ですが、0.1は2進数では終わらない(0.000110011…)ため、長い小数や循環小数は64桁で打ち切ります。