0x0000000000x00000000000000000进制计算器(又称程序员计算器)在 HEX / DEC / OCT / BIN 四种进制间无损实时同步,支持位运算(AND/OR/XOR/NOT/<</>>)、两补码符号切换、可点击位翻译面板,以及 IEEE 754 浮点解析。全部计算基于 JS 原生 BigInt + DataView,纯本地运行,不上传任何数据。
四路显示:顶部选哪个基数作为主输入,显示区下方就会四路同时刷新——改 0xFF,DEC 立刻显示 255、BIN 显示 1111 1111、OCT 显示 377。切换基数时位值不变,只是换一种展示形式。
| 位宽 | 无符号范围 | 有符号范围 |
|---|---|---|
| 8-bit | 0–255 | −128–127 |
| 16-bit | 0–65535 | −32768–32767 |
| 32-bit | 0–4294967295 | −2147483648–2147483647 |
| 64-bit | 0–2⁶⁴−1 | −2⁶³–2⁶³−1 |
| 128-bit | 0–2¹²⁸−1 | ±2¹²⁷ |
| ∞ | 任意大 BigInt | 保留符号 |
位运算行为:所有位运算先按当前位宽归一(两补码),再做计算。例如 8-bit 下 0xFF AND 0x0F = 0x0F;64-bit 下 NOT 0 = 0xFFFFFFFFFFFFFFFF。连按 = 重复上一次运算(如连续右移)。
| 运算 | 固定位宽 Signed | 固定位宽 Unsigned | ∞ 位宽 |
|---|---|---|---|
+ − × | 模 2N,位模式相同 | 同左 | BigInt 原生 |
÷ mod | 按 asIntN(两补码有符号) | 按 asUintN(无符号位值) | BigInt 原生 |
>> | 算术右移(符号扩展) | 逻辑右移(零填充) | BigInt 原生(算术) |
<< AND OR XOR NOT | 位模式一致 | 同左 | BigInt 原生 |
同一位模式切换 Signed ↔ Unsigned,+、−、×、<<、AND、OR、XOR、NOT 结果位模式不变(只有 DEC 解读变);但 ÷、%、mod、>> 的位模式本身会不同,这是语义上的真实差异,不是 bug。
位宽不为 ∞ 时显示,每 4 位一组,点击即翻转——最直接地验证 (x & 0x0F) | 0x80 这类掩码操作的结果。右 = LSB(bit 0),左 = MSB,与大多数教材 / 调试器一致。
底部可展开”浮点解析”。上方输入小数可一键加载为 32 / 64-bit 位模式;当前整数值也会被自动按 Float32(低 32 位)和 Float64(低 64 位)反解,展示符号位 / 指数字段 / 尾数字段的二进制,以及对应的十进制浮点值。
整数运算精确到任意大。浮点解析走 IEEE 754 标准的舍入,如 0.1 被编码为 0x3FB999999999999A——反解回来不再是纯粹 0.1 而是 0.1000000000000000055...,这是浮点标准的固有限制,不是工具的问题。
固定位宽按两补码展示位模式。32-bit 下 ~0 的所有位都是 1,无符号读作 4294967295,有符号读作 −1。本工具默认 Unsigned 视角展示 DEC;切到 Signed 就会看到 −1。∞ 位宽下保留 BigInt 语义,NOT 0 直接是 −1。
按位展示没有"符号"一说——位就是位。Signed 改变 DEC 列的解读方式(把最高位当符号位还是普通数据位),同时让 ÷ % mod >> 按有符号口径运算。HEX/BIN/OCT 的字符面始终一致——0xFFFFFFFF(32-bit)永远是 FFFFFFFF,只有 DEC 在 4294967295 和 −1 之间切换。
这是有意的。例如 8-bit 0xFF:Signed 视角下是 −1,−1 ÷ 2 = 0(朝零截断);Unsigned 视角下是 255,255 ÷ 2 = 127。两种口径都对应真实机器指令(x86 的 IDIV vs DIV)。切换 Signed 就是切换 "这段位要按哪种整数类型解释",除法/取模的结果自然也跟着变。+ − × 不受影响——在模 2<sup>N</sup> 下位模式相同。
>> 是算术右移还是逻辑右移?看 Signed/Unsigned 视角。固定位宽 + Signed 时为算术右移(符号位扩展,如 8-bit Signed 0xF0 >> 2 = 0xFC = −4);Unsigned 时为逻辑右移(零填充,0xF0 >> 2 = 0x3C = 60)。∞ 位宽下走 BigInt 原生算术右移。<< 两种视角位模式相同。
右 = LSB(bit 0),左 = MSB,与大多数教材/调试器一致。每 4 位为一个 nibble,每行 16 位。每组最右侧会标出该位的位号,便于定位。∞ 位宽下不显示面板(位数无上限无法全屏渲染)。
Float32 取当前值的低 32 位(bit 31..0),按符号位(1) + 指数(8) + 尾数(23) 解读。Float64 取低 64 位(位宽 < 64 时零扩展),按符号位(1) + 指数(11) + 尾数(52) 解读。顶部小数输入框可反向:输入 3.14 一键加载为 32 或 64-bit 位模式。
不能直接输入。本工具是整数位运算计算器,键盘禁用了小数点。要对小数做位级研究,请用 IEEE 754 面板:在输入框填入 0.1,加载为 64-bit 位模式,之后就能按位观察、做 AND/OR/位翻转、再用 IEEE 面板反解为浮点。
0xFFFFFFFF 在 32-bit:Unsigned = 4294967295,Signed = −1)、以及 ÷ / % / mod / >> 的运算语义都会随之切换(详见下方"算术口径")。HEX/OCT/BIN 的字符面始终按位展示。FFFFFFFFFFFFFFFF);∞ 下保留 BigInt 符号 = −1。0xFF=−1,−1 ÷ 2 = 0、−1 mod 2 = −1,朝零截断);Unsigned 按无符号位值运算(0xFF ÷ 2 = 127)。÷ 2 会得到不同结果。3.14),一键加载为 32/64-bit 位模式。