signed在C 中意味着什么?我有这张表显示:

这说到signed char 128了+127.128也正整数,所以这怎么能是这样+128来+127?或者做128和+127有不同的含义?我指的是Apress Beginning C这本书.
Pub*_*bby 33
有符号整数可以表示负数; 没有签名不能.
有符号整数如果溢出则具有未定义的行为,而无符号整数则使用模数进行环绕.
请注意,该表不正确.首先,它缺少-标志(例如-128到+127).其次,该标准不保证这些类型必须在这些范围内.
默认情况下,C中的数值是有符号的,这意味着它们可以是负数和正数.另一方面,无符号值不允许使用负数.
因为它只是关于内存,所以最后所有数值都以二进制形式存储.32位无符号整数可以包含从所有二进制0到所有二进制1的值.当涉及到32位有符号整数时,它意味着它的一个位(最重要的)是一个标志,它将值标记为正或负.所以,它是解释问题,它告诉价值已经签署.
正符号值的存储方式与无符号值的存储方式相同,但使用二进制补码方法存储负数.
如果要以二进制形式写入负值,则首先写入正数,然后将所有位反转,最后加1.当将二进制补码中的负值添加到相同幅度的正数时,结果将为0.
在下面的示例中,我们可以处理8位数字,因为它很容易检查:
positive 95: 01011111
negative 95: 10100000 + 1 = 10100001 [positive 161]
0: 01011111 + 10100001 = 100000000
^
|_______ as we're dealing with 8bit numbers,
the 8 bits which means results in 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74670 次 |
| 最近记录: |