求助:补码问题,高手进~~~

来源:百度知道 编辑:UC知道 时间:2024/05/30 18:09:57
问下,超过127的十进制数用二进制补码怎么表示?
比如 十进制的228,用二进制补码怎么表示?
楼下,我说的是要带符号的补码 (0为正,1为负 那种) , 不是光化成二进制就行.

wanli5334, 二进制补码的位数要4的倍数是默认的吗? 用9位二进制表示的话,可以吗?

超过十进制数127的二进制的范围就很大,这没有个准谱;如果按楼主比如的228,显然有9位二进制数就可以了:

011100100

即把补码的数字表示范围扩大一味就行了。不过在计算机内部表示二进制数一般只能是字节、字、双字即8位、16位、32位,将二进制数表示成其他位数实际上是不可能的,所以228在计算机里应该表示成:

0000000011100100

把228先化成二进制,然后在进行补码,11100100,因为是正数所以原码=补码,所以补码也是11100100
一的补码(one's complement) 指的是正数=原码,负数=反码
而二的补码(two's complement) 指的就是通常所指的补码。

228至少要八位二进制码表示,加一个符号位至少九位,但一般用四的倍数那么多位表示,即十二位,那就是000011100100,由于它是正值,他的补码就是本身,-228他的二进制表示为100011100100,他的补码是111100011110,