程序员的计算器:算进制,也算位
左边敲表达式,右边出四个进制和一排可点的位。改位宽、点方块,结果即时变。
输入
表达式只存在这台设备的浏览器里,不上传到服务器,换设备、清缓存会丢。 想彻底删掉,点页脚的「清空我的数据」。
结果
为什么不用系统自带的
系统计算器算得了 1+1,算不了 0xFF & 0x0F。查一个掩码、看一个字节的二进制形态,来回切窗口比写代码还慢。
这个页面把位模式网格放在了和数字同等的位置:8 到 64 位,每一位是一个方块,点亮的是 1。直接点方块,数值跟着变,比心算移位快得多。
输入规则
0x 开头按十六进制,0b 二进制,0o 八进制;不带前缀的数字按左侧选中的进制解析。HEX 模式下直接敲 DE 这样的字母组合也可以。
优先级从高到低:括号、乘除、加减、移位、AND、XOR、OR。取反写 ~ 或 NOT,是一元运算。等号回车都会求值,结果写回输入框接着算。
位宽是关键设定
32 位模式下 0xFFFFFFFF + 1 等于 0。所有运算结果按当前位宽截断,溢出不是错误,是硬件的真实行为。
DEC 行在有符号、无符号不一致时会两个都显示。负数在网格上就是补码——高位全亮,一眼能认出来。
常见疑问
为什么 8 位模式下 255+1 等于 0?
因为所有运算结果都会按当前位宽截断。8 位只有 8 个二进制位,255 已经全亮,再加 1 溢出归零。这不是 bug,是硬件的实际行为——想算大数就把位宽切到 32 或 64。
怎么输入十六进制?
两种办法:把进制模式切到 HEX 后直接敲 A 到 F 的字母;或者在任意模式下用 0x 前缀,比如 0x1F。二进制用 0b 前缀,八进制用 0o 前缀,不受模式影响。
我输入的表达式会被上传吗?
不会。求值用的是你浏览器里的 BigInt,页面不发任何请求。表达式只存在这台设备的 localStorage 里,方便刷新后接着用,点页脚「清空我的数据」可彻底删掉。
支持小数或浮点数吗?
不支持。程序员计算器只处理整数,浮点在二进制里是另一套表示法(IEEE 754),混在一起算容易出错。要算小数请用普通计算器。