二进制中正负数的表达方式主要通过符号位和补码机制实现,具体如下:
一、符号位表示法
最高位为符号位 采用二进制数的最左位(最高位)来表示正负:
- `0` 表示正数(可省略正号)
- `1` 表示负数
无符号数与有符号数区别
- 无符号数:全为 `0` 表示 `0`,全为 `1` 表示最大值(如8位无符号数为 `11111111` 即 `255`)
- 有符号数:最高位为符号位,其余位表示数值大小
二、负数表示:补码机制
原码
直接将数值按位取反(符号位不变),例如:
- `+5` 的原码为 `0000 0101`
- `-5` 的原码为 `1000 0101`(符号位为 `1`)
反码
原码除符号位外逐位取反,例如:
- `-5` 的反码为 `1111 1010`
补码
反码加 `1`,例如:
- `-5` 的补码为 `1111 1011`(反码 `1111 1010` 加 `1` 得到)
8位二进制数可表示范围为 `-128` 到 `+127`
三、应用场景
C语言等编程语言:默认使用补码表示有符号数,正数补码与原码相同,负数按补码规则计算
计算机底层:所有整数均以补码形式存储和运算