发布网友 发布时间:2022-04-27 09:19
共5个回答
热心网友 时间:2023-09-18 01:26
1、首先要知道,换算规则:原码转换为反码:符号位不变,数值位分别“按位取反” 。
2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变,数值位分别“按位取反”。
3、然后就是,原码转换为补码的规则:符号位不变,数值位按位取反,末位再加1。
4、最后补码转换为原码:符号位不变,数值位按位取反,末位再加1,即补码的补码等于原码。
5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反,末位再加1。
热心网友 时间:2023-09-18 01:26
两个说法都没有错,我们举个例子来看看就明白了:热心网友 时间:2023-09-18 01:27
正数: 原码=反码=补码=该正数。热心网友 时间:2023-09-18 01:27
由原码转换到补码,取反加一,在大部分场合,是可行的。
但是,-128 没有原码,用取反加一来求补码,就不行了。
同样,由补码求原码,也有-128 的难处。
怎么办呢?
原码反码取反加一,必须抛弃了。
-------------------------
通用的公式:负数 X 的补码 = 2^n - | X |
负数 X 的绝对值 | X |,当然就是正数了。
就是“由负数相反的数”来算出“负数的补码”。
其实,这是很简单的! 减一取反,即可。
比如:|-128 | = 1000 0000(二进制)。
减一,得:0111 1111。
取反,即:1000 1111,这就是 [-128]补!
又如:|-9 | = 0000 1001(二进制)。
减一,得:0000 1000。
取反,即:1111 0111,这就是 [-9 ]补!
--------------------------
“减一取反”,这方法,百试百灵的。
完全不需要使用“原码反码”这些不完善的码制。
而且,由已知的“负数补码”转换为“正数补码”,也可以用这个方法。
热心网友 时间:2023-09-18 01:28
源码和宝马的转换应该把宝马转换成源码,这样才有利于别人去看清晰。