在二进制数中,正负号的表示方法主要依赖于 符号位的设计,具体规则如下:
一、符号位的定义
最高位表示符号 二进制数的最左端位(即最高位)用于表示符号:
- 0
表示 正数
- 1表示 负数
例如:
- 正数 `+11d` 的二进制表示为 `01011b`
- 负数 `-11d` 的二进制表示为 `11011b`
其余位表示数值
符号位之后的所有位用于表示数值的大小,其数值范围与位数相关。例如:
- 8位二进制数可表示范围:`-128` 到 `+127`
- 16位二进制数可表示范围:`-32768` 到 `+32767`
二、负数的表示方法(补码)
由于计算机内部运算以加法为主,负数通常采用 补码表示,具体规则如下:
- `-45` 的原码为 `10101101`
反码:
符号位不变,其余位按位取反。例如:
- `-45` 的反码为 `11010010`
补码:
反码加1。例如:
- `-45` 的补码为 `11010011`
补码的引入使得减法运算可以通过加法实现(如 `M - N = M + (-N)`)
三、正数的表示
正数的原码、反码、补码完全相同。例如:
`+5` 的二进制表示为 `0000 0101`,反码和补码均为 `0000 0101`
四、特殊情况说明
溢出与补码范围
补码表示法避免了原码中的`-0`和`+0`问题,但存在溢出风险。例如:
- 8位系统中,`1111 1111`表示`-1`,若再加1则变为`0000 0000`(覆盖了正零)
无符号数与有符号数
二进制本身是无符号的,但通过符号位区分正负。例如:
- `1111 1111`表示无符号数`255`,表示有符号数则为`-1`
总结
二进制数通过 符号位区分正负,正数直接用二进制表示,负数通过 补码形式表示。这种设计简化了计算机的加减运算,并统一了正负数的处理方式。