程序员计算器
在十进制、十六进制、八进制和二进制之间进行转换,并应用位运算和移位运算。
关于这个计算器
Convert integers between binary, octal, decimal, and hexadecimal, and apply bitwise operations. Type in any base and the others update live.
Number bases
- Binary (base 2) — digits 0–1, used by computers.
- Octal (base 8) — digits 0–7.
- Decimal (base 10) — everyday numbers.
- Hexadecimal (base 16) — digits 0–9 and A–F, common in programming.
Bitwise operations
AND, OR, XOR, and NOT compare bits position by position; shifts (≪, ≫) move bits left or right, which multiplies or divides by powers of two.
Signed numbers
Negative values use two's complement, where the highest bit indicates the sign. Toggle the signed mode to see how the same bits represent a negative number.
如何使用程序员计算器
- 1输入当前进制下的值(二、十、十六或八进制)。
- 2切换到想查看的目标进制。
- 3查看转换后的值,以及(如需)位运算(AND、OR、XOR、移位)。
程序员计算器
位运算:a AND b 保留两者都为 1 的位;a XOR b 保留恰好一个为 1 的位程序员计算器在二进制、八进制、十进制与十六进制间工作,并暴露底层代码所用的位逻辑。
位与/或/异或与移位操作单个比特,是标志位、掩码与嵌入式控制的基础。
位运算直接操作二进制位,速度极快,在系统编程、权限控制、图形处理里大量使用。最实用的几个技巧:**判断奇偶用 n & 1**(比 n % 2 快);**乘除 2 的幂用移位**(n << 3 = n × 8,n >> 2 = n ÷ 4 取整);**交换两数不用临时变量**(a ^= b; b ^= a; a ^= b);**消去最低位的 1**(n & (n-1),配合循环可统计二进制中 1 的个数,这是面试高频题)。
权限系统喜欢用位标志:读=1、写=2、执行=4,那么「读写」权限就是 1|2 = 3;判断是否有写权限用 perm & 2;撤销写权限用 perm & ~2。Unix 文件权限 755 就是三组三位的组合(拥有者 rwx=7、组 rx=5、其他 rx=5)。**用位存储标志的好处是任意组合只需一个整数**,存储和传输都省。
| 运算 | 符号 | 示例 | 结果 | 常用用途 |
|---|---|---|---|---|
| 按位与 | & | 12 & 10 | 8 | 提取指定位 / 掩码 |
| 按位或 | | | 12 | 10 | 14 | 置位(打开标志) |
| 按位异或 | ^ | 12 ^ 10 | 6 | 翻转位 / 交换变量 |
| 取反 | ~ | ~12 | -13 | 位反转(补码) |
| 左移 | << | 3 << 2 | 12 | 乘以 2ⁿ |
| 右移 | >> | 12 >> 2 | 3 | 除以 2ⁿ(取整) |
| 判断奇偶 | & 1 | 7 & 1 | 1 | 结果为 1 即奇数 |
位运算真值表与常用技巧
常见问题
位与有什么用?
它对数值做掩码,仅保留在掩码中也为 1 的位。
为何用移位而非乘法?
左移 n 位等于乘 2^n,在硬件层往往更快。
什么是补码?
有符号整数表示负数的标准方式:按位取反再加一。
左移右移要注意什么?
左移会丢掉高位,可能溢出变号(有符号数)。右移分两种:算术右移(保留符号位,负数补 1,Java/C 的 >>)和逻辑右移(补 0,Java 的 >>>、C 的无符号数)。对负数做右移要特别小心。另外移位位数不能等于或超过数据宽度,否则行为未定义。
为什么 ~12 等于 -13 而不是 3?
因为采用补码表示。12 是 00001100,取反得 11110011,这个补码对应的有符号数就是 -13(验证:11110011 取反 00001100,加 1 得 00001101 = 13,所以原值是 -13)。位运算结果要看是有符号还是无符号类型,同一个位模式解释不同结果就不同。
