01 / 例
例
11111111255テキストとコード / MULTIVERTO
2進数の整数を正確な十進整数として読み取ります。
01 / 例
1111111125502 / ガイド
2 進数の整数を正確な 10 進整数として読み取ります。仕様書、フラグのフィールド、プログラミングの練習問題にある 2 進数の文字列の値を調べるときに使います。数字として使えるのは 0 と 1 だけで、先頭に 0b を付けると基数を示せます。先頭のマイナス記号にも対応しますが、固定幅の値を符号付きとして扱うべきかは推測しません。
2 進数の各桁は、そのビット値に対応する 2 の累乗を掛けた分を寄与します。11111111 で 1 になっている桁の重みは 128、64、32、16、8、4、2、1 です。足すと 255 になります。先頭にゼロを追加しても値は変わりませんが、プロトコル内のフィールド幅にとっては重要な場合があります。この数値変換ではその幅を意図的に無視します。ビット列がテキストの UTF-8 バイトを表すなら、別の「2 進数からテキスト」ツールを使ってください。
2 進数は右から読みます。各桁が 1 なら、その位置は 1、2、4、8 と続く重みを寄与します。符号は別に書かれます。ここでの結果は固定ビット幅の 2 の補数による機械語整数ではありません。これらの変換は整数を扱い、BigInt によって桁数の多い値でも精度を保持するため、通常の浮動小数点数のように下位ビットが黙って失われることはありません。先頭のマイナス記号は数学的な負の整数を示します。固定ビット幅の 2 の補数によるバイト列ではありません。機械でマイナス 1 を表すビット列は、8、16、32 ビットなど、使用する幅で変わります。プロトコルで必要なら、幅と符号化の規則を別途指定してください。整数の 2 進数表記と、その数字を文字として書いたときの UTF-8 バイトの 2 進数表記を混同しないでください。
したがって 10000000 の先頭のビットは 128 に相当し、残りのゼロは値を増やしません。接頭辞 0b は二進表記だと示すだけで数値に加算されず、先頭にゼロを付けても整数値は同じです。通信規格が符号付きの八ビットのバイトを定義する場合、同じ並びを二の補数として別の値に解釈できます。しかしこのページは、数学的な負号を入力しない限り符号なしの大きさとして扱います。ビットマスクなら個々のフラグを追えるよう、元の並びも残してください。
具体例として 11111111 を入力すると 255 が得られます。別のアプリケーションと比較するときは、元の入力も結果の横に残してください。次に、出力を逆方向の進数変換ツールに入力して確かめます。接頭辞や先頭のゼロの有無が違っても、復元した整数の値は元の値と一致するはずです。この確認で値の一致は分かりますが、バイト幅や符号付きの表現方法は別途仕様で確認してください。
ガイドを探す