在二进制数中,正负号的表示方法主要取决于数据类型,具体规则如下:
一、有符号数表示
符号位约定
- 最高位(最左边的位)为符号位,`0`表示正数,`1`表示负数。
- 例如:
- 正数 `5`(32位整型)表示为 `0000000000000101`
- 负数 `-5`(32位整型)表示为 `1000000000000101`(补码形式)。
补码表示法
- 负数通常以补码形式存储,计算方法为:
1. 取绝对值的原码
2. 各位取反(反码)
3. 反码加1
- 例如:
- `-1`(8位):
- 原码:`00000001`
- 反码:`11111110`
- 补码:`11111111`
- `-100`(8位):
- 原码:`10000010`
- 反码:`11111101`
- 补码:`11111110`。
二、无符号数表示
全部位均为`0`,表示零;
所有位均为`1`,表示最大正数(如8位无符号数为`11111111`,即255)。
三、注意事项
原码与补码的转换
- 求补码时需注意进位,例如8位补码`11111110`加1后变为`11111111`,而非`00000001`。
数据类型的影响
- 不同数据类型(如8位、16位、32位)位数不同,符号位后的数值位也不同。例如32位整型有31位数值位,8位无符号数有7位数值位。
通过上述规则,二进制数可灵活表示正负数,并确保计算机能够正确处理不同范围的数值。