普通计算器做 0b1010 + 0xF 会报错,但这是程序员天天要算的东西。速工具 的程序员计算器支持四种进制互转、位运算、ASCII 查询,纯本地运行。
四种进制快速对比
| 进制 | 基数 | 前缀 | 典型用途 |
|---|---|---|---|
| 二进制 | 2 | 0b | 位掩码、权限位 |
| 八进制 | 8 | 0o | Unix 文件权限(chmod) |
| 十进制 | 10 | 无 | 日常计算 |
| 十六进制 | 16 | 0x | 内存地址、颜色值、Unicode |
位运算速查
| 运算 | 符号(C/JS) | 示例 | 用途 |
|---|---|---|---|
| 按位与 | & | 0b1100 & 0b1010 = 0b1000 | 掩码、权限检查 |
| 按位或 | | | 0b1100 | 0b1010 = 0b1110 | 设置标志位 |
| 按位异或 | ^ | 0b1100 ^ 0b1010 = 0b0110 | 交换变量、加密 |
| 按位取反 | ~ | ~0b0011 = 0b1100(补码表示) | 生成反码 |
| 左移 | << | 0b0011 << 2 = 0b1100 | 快速乘 2ⁿ |
| 右移 | >> | 0b1100 >> 2 = 0b0011 | 快速除 2ⁿ |
技巧:左移 n 位 = 乘以 2ⁿ;右移 n 位 = 除以 2ⁿ(整数除法)。比乘法快很多,底层代码常用。
权限位计算(Unix chmod)
Unix 文件权限用 3 位八进制表示:rwxr-xr-x = 755。
所有者:rwx = 111(二进制)= 7(八进制)
群组: r-x = 101(二进制)= 5(八进制)
其他: r-x = 101(二进制)= 5(八进制)
chmod 755 file # 就是这个意思
用程序员计算器可以在十进制和八进制之间快速转换,算权限很方便。
ASCII 码查询
ASCII 是美国信息交换标准码,用 0-127 的数字表示英文字符。
| 字符 | 十进制 | 十六进制 | 说明 |
|---|---|---|---|
| A | 65 | 0x41 | 大写 A 开始 |
| a | 97 | 0x61 | 小写 a 开始(比大写多 32) |
| 0 | 48 | 0x30 | 数字 0 开始 |
| (换行) | 10 | 0x0A | LF(Unix 换行) |
| (回车) | 13 | 0x0D | CR(Windows 换行是 CRLF) |
在线使用步骤
- 打开 程序员计算器。
- 选择输入进制(二进制/八进制/十进制/十六进制)。
- 输入数值,工具实时显示其他进制的等价表示。
- 选择位运算类型,输入第二个操作数,点击计算。
- 在 ASCII 查询区输入字符或数字,查看对应关系。
FAQ
负数在位运算里怎么表示?
计算机用补码表示负数。简单说:正数的二进制取反再加 1。比如 8 位下,-1 的表示是 11111111(0b00000001 取反 = 0b11111110,加 1 = 0b11111111)。程序员计算器里可以切换「有符号」和「无符号」模式来看同一串二进制。
为什么位运算比乘法快?
因为移位直接改二进制位,一条 CPU 指令就完成;乘法要调用乘法器电路(或多条指令)。在底层代码(C/C++、Rust)里,用移位代替乘除以 2 的幂次是常见优化。但现代编译器会自动做这个优化,手写的移位不一定更快。