站点介绍

调串口寄存器那年,我盯着 0x3F 和 0xC0 发了十分钟呆。哪个是高两位、哪个是低六位,全靠手指头在屏幕上数格子。
后来我把位模式网格做进了这个页面。32 位就是 32 个方块,点亮的是 1,点一下方块那一位就翻转,数值跟着变。
这比在纸上画位表快,也不容易错位。
0x 开头是十六进制,0b 二进制,0o 八进制,不带前缀的数字按左边选中的进制解析。HEX 模式下直接打 DEAD 也能认出来。
优先级和 C 语言一致:括号、乘除、加减、移位、AND、XOR、OR。取反写 ~ 或 NOT,是一元运算。除法向下取整,这是整数运算,不是 bug。
按等号或回车求值,结果写回输入框,接着算不丢上下文。
8 位模式下 255+1 等于 0。溢出在这里不是错误,是硬件的真实行为——8 个格子全亮之后再来一个进位,只能从头开始。
DEC 行在有符号、无符号不一致时会两个都给。看到高位全亮的网格,那就是补码表示的负数。
我的用法:调位标志切 8 位,一眼看出哪几位开了;算地址偏移用 32 位,移位配 OR;只有碰 64 位 ID 的时候才开 64 位。
为什么 8 位模式下 255+1 等于 0?因为所有运算结果都会按当前位宽截断。8 位只有 8 个二进制位,255 已经全亮,再加 1 溢出归零。这不是 bug,是硬件的实际行为——想算大数就把位宽切到 32 或 64。
怎么输入十六进制?两种办法:把进制模式切到 HEX 后直接敲 A 到 F 的字母;或者在任意模式下用 0x 前缀,比如 0x1F。二进制用 0b 前缀,八进制用 0o 前缀,不受模式影响。
我输入的表达式会被上传吗?不会。求值用的是你浏览器里的 BigInt,页面不发任何请求。表达式只存在这台设备的 localStorage 里,方便刷新后接着用,点页脚「清空我的数据」可彻底删掉。
支持小数或浮点数吗?不支持。程序员计算器只处理整数,浮点在二进制里是另一套表示法(IEEE 754),混在一起算容易出错。要算小数请用普通计算器。
工具入口:程序员计算器:进制、位运算、位模式一次看全。同类:Cron 表达式翻译器。
English version: https://www.9314.cn/tools/prog-calc/en/
浏览统计(最近30天)
评论列表 (0条)