计算机中,数值均以补码形式存储,正数的原码、反码、补码相同。负数的反码由原码符号位不变其余位取反求得,补码等于反码+1。
补码求原码可用相反步骤。
所以欲把计算机存储的二进制转换为相应的十进制数值的一般步骤是:
1)先看这个数是有符号数还是无符号数,若是无符号/正数,则直接转化为十进制;
2)若为负数,则存储的是补码,最高位不变,-1得到其反码,然后最高位不变,其余位全部取法得到原码,然后转化为十进制并添加负号。例:
有符号char类型值的负数部分在计算机中的实际存储状态(以补码形式):
各种进制数的转换打印尤需注意:
例如:
最后需注意:有符号数的最高位为符号位,当二进制数值在原码、反码、补码相互转化时,取反动作均保持最高位不动,而任何情况引起的进位溢出可以改变最高位的1/0状态