知识总结
机器数的表示
计算机中用二进制表示数据,最高位为符号位(0表示正,1表示负)。
三种编码方式
以8位为例:
| 数值 | 原码 | 反码 | 补码 |
|---|
| +5 | 0000 0101 | 0000 0101 | 0000 0101 |
| -5 | 1000 0101 | 1111 1010 | 1111 1011 |
| +0 | 0000 0000 | 0000 0000 | 0000 0000 |
| -0 | 1000 0000 | 1111 1111 | 0000 0000 |
转换规则
- 正数:原码 = 反码 = 补码
- 负数:
- 原码 → 反码:符号位不变,其余位取反
- 反码 → 补码:反码 + 1
- 原码 → 补码:取反 + 1
为什么使用补码?
- 解决了 +0 和 -0 的二义性问题
- 减法可以用加法实现:a - b = a + (-b的补码)
- 简化了硬件电路设计
补码表示范围(n位)
- 有符号整数范围:-2^(n-1) 到 2^(n-1) - 1
- 8位:-128 ~ 127
- 16位:-32768 ~ 32767
- 32位:约 -2.1×10⁹ ~ 2.1×10⁹
ASCII码(常考)
| 字符 | ASCII码 |
|---|
| '0' | 48 |
| 'A' | 65 |
| 'a' | 97 |
| 空格 | 32 |
- 'a' - 'A' = 32(大小写转换)
- '0' 的ASCII码是48,不是0