プログラマー電卓 & ビット演算電卓

1 つの式を入力します。0x 16 進、0b 2 進、0o 8 進リテラル、 ビット演算子 & | ^ ~、シフト << >> >>>、ローテート、 通常の算術が使えます — 結果は 10 進・16 進・8 進・2 進として、8/16/32/64 ビットの ワードサイズ、符号付き/なしでライブ更新されます。下部には、クリック可能なビットグリッド、 2 オペランド・ビット演算パネル(AND / OR / XOR / NAND / NOR / NOT / シフト / ROL / ROR)、 単一ビットのセット/クリア/トグル。ビットロジックなしの純粋な基数変換には 数学コンバーターを、統計には 統計計算を。
ワードサイズ 表示 演算子:& | ^ ~ << >> >>> + - * / % ( ) — 整数演算のみ。結果はワードサイズでラップします。
DEC
HEX
OCT
BIN
ビットは最上位桁から表示。暗いセルは現在のワードサイズの外です。
ビット番号(0 = 最下位)
A = B = A と B は完全な式を受け付けます(例:1 << 12)。
A と B が両方解析されると結果表が表示されます。シフトとローテートはカウントを B から取ります。
例を試す:
シフトの挙動:<< はワードサイズにマスクし戻します(上から 落ちたビットは消えます)。>>> は常に論理(符号なし)シフト。 >> は表示セレクターに従います:符号付きモードでは算術、符号なし モードでは論理。プライバシー:電卓全体がこのタブ内で動作 — サーバーなし、保存なし。

プログラマー電卓とは何か?

プログラマー電卓は、コンピューターが保存するやり方で算術を行います:固定幅のビットワードです。 1 本の果てしない数直線の代わりに、8 ビットワードは 256 個の値の円、32 ビットワードは 4,294,967,296 個の円です。すべての結果はその円にラップし戻され、同じビットを符号なし カウント(0 … 255)としても、符号付き 2 の補数値(-128 … 127)としても読めます。 上の 4 つの基数行は、同じビットの 4 つの描き方です — 1 つを編集すると他の 3 つが追従します。

プログラマーが 16 進に棲む理由

16 進 1 桁はちょうど 4 ビットなので、バイトは常に 2 桁、32 ビットワードは 常に 8 桁です。16 進は、ゼロを人間の目ように再グループ化した 2 進です:

2 進16 進10 進
1111 11110xFF255
0001 01100x1622
1000 00000x80128(符号付きなら -128)

2 の補数を一段落で

ワードを符号付きとして読むには、最上位ビットを見ます。0 なら、値は符号なしカウントそのもの。 1 なら、円のサイズを引きます:8 ビットの 0xFF は 255 − 256 = −1。これがすべてです — -x と 0 - x は同一のビットを生成し、だから同じ加算器ハードウェアが 両方に機能します。符号反転は「すべてのビットを反転して 1 を足す」:NOT(0x01) = 0xFE、+1 = 0xFF = −1。

シフト演算子を一目で

演算子名称8 ビットの例(a = 0xF0)
a << 1左シフト0xE0 — 最上位ビットが落ち、下から 0 が入る
a >> 1(符号なし)論理右シフト0x78 — 上から 0 が入る
a >> 1(符号付き、a = −16)算術右シフト0xF8 = −8 — 符号ビットがコピーされる
a >>> 1常に論理0x78 — 表示セレクターに依存しない
rol(a, 1)左ローテート0xE1 — 落ちた最上位ビットが下から再入

このページが防いでくれるよくある過ち

算術シフト vs 論理シフト:符号ビットをコピーする(算術)ことと ゼロで埋める(論理)ことは、最上位ビットが立っているときに異なります — 表示セレクターを 切り替えて 0xF0 >> 1 が 0x78 と 0xF8 の間で変わるのを見てください。
53 ビットの衝撃:JavaScript の通常の Number 型は 64 ビット浮動小数点で、 安全な整数ビットは 53 桁しかないため 0xFFFFFFFFFFFFFFFF は正確に表現できません — このページは内部で正確な 64 ビット整数演算を使うため、表示されるすべての 16 進桁が信頼できます。
浮動小数点の罠:0.1 + 0.2 が有名な 0.30000000000000004 になるのは浮動小数点のせい。この電卓は設計上整数のみ — 除算はゼロ方向に切り捨て、 C の int の / とまったく同じです。
先頭のゼロ:古い C では 052 のようなリテラルは 8 進を意味しました。 ここでは 10 進は裸の数字、8 進には 0o プレフィックスが必要なため、曖昧さはありません。

よくある質問

最大の数は? — 64 ビット符号なし:18,446,744,073,709,551,615 (0xFFFFFFFFFFFFFFFF)。符号付き:±9,223,372,036,854,775,808。
1 << 8 が 0 になったのは? — ワードサイズが 8 ビッドで、ビット 8 は 存在せず、マスクが落とします。16/32/64 ビットに切り替えると保持されます。
~ は何をする? — ビット単位 NOT:現在のワードサイズ内のすべてのビットが 反転するので、~0 は全 1(255 / 65535 / −1 …)。
浮動小数点はある? — いいえ、整数のみ。浮動小数点、三角関数、関数には 関数電卓を。
何かマシンから出る? — いいえ:サーバーなし、保存なし、アナリティクスなし。 タブを閉じればすべて消えます。