这个问题很简单 楼主别想复杂:
楼主错把化为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