补码的产生原因:10000000被规定成了-128
使用补码的原因:化减法为加法和避免-0
注意点:取反符号位不取反,但not符号位要去反;进位时符号位也要进位;10000000被规定了是-128;0的补码是0
补码反码的储存方式:计算机用$0000到$7FFF依次表示0到32767的数,剩下的$8000到$FFFF依次表示-32768到-1的数。32位有符号整数的储存方式也是类似的。稍加注意你会发现,二进制的第一位是用来表示正负号的,0表示正,1表示负。这里有一个问题:0本来既不是正数,也不是负数,但它占用了$0000的位置,因此有符号的整数类型范围中正数个数比负数少一个。对一个有符号的数进行not运算后,最高位的变化将导致正负颠倒,并且数的绝对值会差1。也就是说,not a实际上等于-a-1。这种整数储存方式叫做“补码”。
11111111+01111111=01111111-10000001(原)=-254
01111110:126
01111111:127
10000000:-128
10000001:-127
(不是因为补码的性质,10000000才是-128,而是-128创造出了补码)
时间: 2024-10-13 21:49:03