发布网友 发布时间:2024-10-23 22:59
共3个回答
热心网友 时间:2024-11-16 05:27
补码回避了0有多种表示的问题以及循环进位的需要。在补码表示中,负数以位模式表示为正值的反码加1。补码里 00000000表示“正"0,10000000不是"负"0,是-128
热心网友 时间:2024-11-16 05:22
1、补码表示的有符号数,对于正数来说同原码、反码一样,但负数的数值位部分为其绝对值按位取反后末位加1所得。
2、借鉴上面的答案:
补码,与其真值,是一一对应的。
不存在一个数,有两个码的情况。
所以,真值,也是 256 个。
把 256 个真值,分成“个数相等”的两部分,就是:
有一半(128 个)是负数,应该就是:-128~-1。
另一半(128 个)是非负数,即: 0~+127。
3、然后结合考虑
在非负数的时候,表示同原码和反码一样,即0~+127
而在负数的时候,为什么要其绝对值按位取反后末位加1呢?因为反码里面+1就是数值上-1,
所以0~-127就变成了-1~-128,
所以-127的补码为1000 0001,而-128的补码为1000 0000
是不是很巧妙o(* ̄︶ ̄*)o
热心网友 时间:2024-11-16 05:23
字长 8 位,共有 2^8 = 256 组代码。
补码,与其真值,是一一对应的。
不存在一个数,有两个码的情况。
所以,真值,也是 256 个。
把 256 个真值,分成“个数相等”的两部分,就是:
有一半(128 个)是负数,应该就是:-128~-1。
另一半(128 个)是非负数,即: 0~+127。
综合,就是:-128 ~ +127。
无论怎么想,也不会是:-127 ~ +127。