简短的回答
二进制以 2 为基数:每个数字(位)都是 0 或 1,每个位置代表 2 的幂。二进制的 1010 等于十进制的 1×8 + 0×4 + 1×2 + 0×1 = 10。该计算器可处理二进制算术、按位逻辑(AND、OR、XOR、NOT)、位移位以及十进制、十六进制和八进制的即时转换。
要点
- 值的上限为 32 位有符号整数范围(-2,147,483,648 到 2,147,483,647)——超出该范围的二进制字符串将被拒绝,而不是默默地被截断。
- 按位 AND/OR/XOR 逐位比较数字,与算术加法或乘法不同 - 1010 AND 0110 等于 0010,而不是 16。
- 左移 n 相当于乘以 2ⁿ;右移 n 相当于整数(下取整)除以 2ⁿ。
- 每个十六进制数字正好映射到 4 个二进制位,一旦您知道 16 个四位模式,这使得十六进制到二进制的转换变得机械化。
二进制位值的工作原理
就像小数位值使用十的幂一样,二进制位值使用二的幂。从右向左读取8位数字10110101:
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
将 1 处的位置值相加:128 + 32 + 16 + 4 + 1 = 181。因此二进制 10110101 等于十进制 181。
位运算与算术运算
| 手术 | 它的作用 | 例子 |
|---|---|---|
| AND (&) | 仅当两位均为 1 时才为 1 | 1010 & 0110 = 0010 |
| OR (|) | 1,其中任一位为 1 | 1010 | 0110 = 1110 |
| XOR (^) | 1 位不同的地方 | 1010 ^ 0110 = 1100 |
| 左移 (<<) | 左移位,填充0(×2ⁿ) | 0011 << 2 = 1100 |
| 右移 (>>) | 右移位(÷2ⁿ,向下舍入) | 1100 >> 2 = 0011 |
按位运算比较或移位各个位 - 它们不像加法那样在位置之间进行传送,这就是为什么 1010 AND 0110 落在 0010 而不是任何类似于和的东西。
要避免的常见错误
- 将按位 AND/OR 视为算术加法或乘法 - 它们逐位运算,不带进位。
- 忘记 32 位有符号范围上限 - 超过 31 个的二进制字符串将溢出支持的范围并返回错误。
- 期望按位 NOT 只是翻转打印的数字 - 在二进制补码表示中,对正数进行 NOT 运算会产生负数,而不是简单的数字反转。
- 假设右移轮次 — 它会将负数向负无穷大截断(向下取整),因此 7 >> 1 = 3,而不是 3.5 或 4。