负数为什么不可以用原码和反码表示?
1个回答
展开全部
由原码转换到补码,取反加一,在大部分场合,是可行的。
但是,-128 没有原码,用取反加一来求补码,就不行了。
同样,由补码求原码,也有-128 的难处。
怎么办呢?
原码反码取反加一,必须抛弃了。
-------------------------
通用的公式:负数 X 的补码 = 2^n - | X |
负数 X 的绝对值 | X |,当然就是正数了。
就是“由负数相反的数”来算出“负数的补码”。
其实,这是很简单的! 减一取反,即可。
比如: |-128 | = 1000 0000(二进制)。
减一,得:0111 1111。
取反,即:1000 1111,这就是 [-128]补!
又如: |-9 | = 0000 1001(二进制)。
减一,得:0000 1000。
取反,即:1111 0111,这就是 [-9 ]补!
--------------------------
“减一取反”,这方法,百试百灵的。
完全不需要使用“原码反码”这些不完善的码制。
而且,由已知的“负数补码”转换为“正数补码”,也可以用这个方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询