在C语言中,负数的二进制表示采用 补码形式,具体规则如下:
一、基本规则
符号位 使用最高位表示符号,0表示正数,1表示负数。
原码、反码、补码
- 原码: 直接将数值按二进制表示,符号位固定为1(如-5的原码为 `10000000 00000000 00000000 00000101`)。 - 反码
- 补码:反码加1(如-5的补码为 `11111111 11111111 11111111 11111011`),这是计算机实际存储负数的形式。
二、计算示例
以-130为例(32位int类型):
原码:
`10000000 00000000 00000000 10000010`
反码:
`11111111 11111111 11111111 01111101`
补码:
`11111111 11111111 11111111 01111110`(反码加1)。
三、应用与范围
范围:`-2^n-1` 到 `2^n-1`(如int类型为-32768到32767)。
优势:补码简化了加减法运算,无需单独处理负数。
四、注意事项
无符号数:最高位为0,表示非负数(如 `00000000 00000000 00000000 00000000` 表示0,`00000000 00000000 00000000 00000001` 表示1)。
输入输出:C语言通过负号`-`直接表示负数,如`-5`或`-x`。