请问1000 0000 0000 0000 代表有符号的16进制数如何补码运算,以及如何进行十进制转换?

1个回答

  • 这个问题很简单 楼主别想复杂:

    楼主错把化为10进制搞成了化为补码了.

    化为10进制和化为补码是完全两回事,因为补码仍然是2进制,是另一种2进制表示形式.

    下面我将认为楼主要求2进制补码把这道题解一遍:

    在解决这个问题之前,楼主需要明白的是,0用原码表示时有两种表示

    +0和—0 +0的是0000符号位是0 —0是1000 符号位是1

    我要多说一句,补码可以表示的范围是除掉符号位后的 -2^n~2^n-1

    如果你的原码压根不在这个范围,就无法表示.

    楼主提供的原码是 1 000 0000 0000 0000,这是原码负0(—0)

    而在补码中,是没有负0概念的,补码的0和负0都是0.

    所以楼主必须要化成+0,即0 000 0000 0000 0000 再来求补码.

    所以,您这道题出的本身就很奇怪.因为没有哪个人用负0(—0)求补码

    如果您坚持要求的话,就按照我上面说的,化正求补.因为补码只支持正0.

    补码是2进制数表示法,不是10进制.转为10进制和求补码不一样,楼主别混淆了

    第二个问题:

    我在前面已经说到1000 0000 0000 0000是二进制时,才可以用除符号求反+1求2进制补码.

    化成十六进制时,从左到右每4位合成一位十六进制位,因为2的4次方=16.

    所以是(1000)2=(8)16 (0000)2=(0)16 最终结果是(8000)16依然从左到右

    再补充一点给楼主:

    为什么4位2进制表示1位16进制:

    进制之间的转化的标准是 转化之后他们所代表的值不变.

    如16进制中的10,在10进制中,其实是16.因为1^16=1^10+6

    而2^4=16::0-15这16个数,就用4位来2进制来表示,可以不重不漏.左边一个16进制数恰对应右边一个4位的2进制数.(这是数学上的排列,这个楼主肯定懂吧?)

    楼主可能会问我为什么高位也可以如此,那是因为×16^n 也等于×2^4^n嘛.

    至于1000 0000 0000 0000怎么样去求10进制,

    1×2^12 = 1×10^...+ 1×10^...这样求就OK