MiServe DevTools

あなたのステッカー

ツールをここにピン留めできます。このブラウザに保存されます。

進数変換ツール

任意の大きさの整数を、2 進数、8 進数、10 進数、16 進数、そして 2〜36 の任意の基数の間で変換し、2 の補数表現も表示します。

絶対値のビット長
符号付き整数(2 の補数)として必要なビット数
固定幅の整数として(2 の補数)
幅16 進数2 進数符号付きの値符号なしの値
8 ビット
16 ビット
32 ビット
64 ビット

ブラウザ内で動作します。貼り付けた内容はアップロードされません。

このツールについて

同じ数をさまざまな基数で表す

基数(radix)とは、位取り記数法で使う数字の種類の数です。10 進数は 10 種類、2 進数は 2 種類、8 進数は 8 種類、16 進数は 16 種類で、16 進数では 10 から 15 の値に a から f を借りて使います。36 までの基数では、アルファベットを z まで続けて使います。

ハードウェアは数を 2 進数で保存します。16 進数はそれを短く書く方法で、16 進数 1 桁がちょうど 4 ビット、2 桁で 1 バイトになります。8 進数は今も Unix のファイルパーミッションで使われており、1 桁が 3 ビットに対応します。

このページの欄はすべて同じ整数を表示します。どれかを編集すると、ほかの欄も追従します。

入力できる形式

数字は 1111_0000 や 1 000 000 のようにスペースやアンダースコアで区切ることができ、先頭にマイナス記号を付けることもできます。プレフィックス 0b、0o、0x は、その英字自体がその欄の数字でない限り、2 進数、8 進数、16 進数を指定します。たとえば 10 進数の欄に 0xff と入力すると 255 と読み取られますが、16 進数の欄に入力した 0b1 は 16 進数の B1 です。

変換には JavaScript の BigInt(任意精度の整数型)を使うので、丸めは発生しません。大きさの上限は、ブラウザの JavaScript エンジンが BigInt に設けている制限だけで、それを超える数はその欄で通知されます。通常の JavaScript の数値では精度が落ち始める 9,007,199,254,740,991 を超える数も、正確に変換されます。対応しているのは整数だけで、小数には対応していません。

負の数と 2 の補数

各欄では、負の数をマイナス記号と絶対値で表示します。コンピューターでの保存方法は異なり、2 の補数では、負の値に「2 のビット幅乗」を足した値として保存します。8 ビットならそれは 256 なので、-1 は 255(ff)、-128 は 128(80)として保存されます。

表には、値が収まる場合に 8、16、32、64 ビットでのビットパターンと、そのパターンを符号付き整数、符号なし整数として読み直したときの値を表示します。255 と -1 が 8 ビットで同じパターン ff になるのはこのためです。

よくある質問

2 進数を手計算で 10 進数に変換するには?

2 進数の各桁は、右端の 1 から始まる 2 のべき乗の重みを持ちます。桁が 1 のところの重みを足し合わせます。1011 なら 8 + 2 + 1 で 11 です。

プログラミングで 16 進数がよく使われるのはなぜですか?

16 進数 1 桁はちょうど 4 ビットを表すので、1 バイトは常に 16 進数 2 桁になります。そのため、メモリダンプ、色、ハッシュ、ビットマスクを 2 進数よりはるかに短く書けるうえ、ビットにも簡単に戻せます。

どのくらい大きな数まで変換できますか?

ツール自体には上限がありません。任意精度の整数を使うので、数千桁の数も正確に変換できます。非常に長い入力は計算に時間がかかります。また、ブラウザの JavaScript エンジンごとに 1 つの整数の最大サイズがあり、それを超える数はその欄で通知されます。

2 の補数とは何ですか?

ほぼすべてのコンピューターが符号付き整数の保存に使っている方式です。最上位ビットが負の重みを持つため、8 ビットの値の範囲は -128 から 127 になり、-1 は 8 ビットすべてが 1 の値として保存されます。

エンコードのほかのツール