对下图需要注意下溢出的情况判断,后面自然会有讲三种方法


原码可表示小数,也可以表示整数,但一般在计算机中采用原码表示浮点数的尾数

移码只能表示整数,注意

补码应用非常广,也是最有效率的,ALU内的计算几乎全部依赖于补码,不论小数整数

无非就是乘除法的时候会采用不同取模运算罢了,模四或者模二

无符号数就不多说了,就是简单的机器数


对于补码,真值、原码、移码、反码的全面总结,一共二十种(可以优化表述

具体补位的长度看题目给定,如果给定字长为X位就进一步补位数即可

真值-补码

正数:即为正数转原码,原码补码相同,数值位高位补0

负数:即为负数转原码,原码转反码,反码转补码

最高位符号位定1,数值位高位补0转为原码

除符号位最高位全部取反转为反码

低位加一转为补码

真值-原码

正数:数值位高位补0

负数:最高位符号位定1,数值位高位补0

真值-反码

正数:即为正数转原码,原码反码相同,数值位高位补0

负数:即为负数转原码,原码转反码

最高位符号位定1,数值位高位补0转为原码

除符号位最高位全部取反转为反码

真值-移码(仅适用于偏移量为恰到好处的:

正数:即为正数转原码,原码转补码,补码转移码,而原码补码相同

即为正数转原码,原码补码相同,数值位高位补0,然后符号位取反

负数:即为负数转原码,原码转反码,反码转补码,补码转移码

最高位符号位定1,数值位高位补0转为原码

除符号位最高位全部取反转为反码

低位加一转为补码

符号位取反转为移码

原码-真值

正数:即数值位,二进制真值

负数:即负号加数值位,负的二进制真值

原码-补码

正数:即原码,原码补码相同

负数:即原码转反码转补码

除符号位最高位全部取反转为反码

低位加一转为补码

原码-反码

正数:即原码,原码反码相同

负数:即原码转反码

除符号位最高位全部取反转为反码

原码-移码

正数:即原码转移码

符号位取反

负数:即原码转反码,反码转补码,补码转移码

除符号位最高位全部取反转为反码

低位加一转为补码

符号位取反转为移码

反码-真值

正数:即原码转真值,正数反码原码相同

即数值位,二进制真值

负数:即反码转原码,原码转真值

除符号位全部取反

负号加数值位,负的二进制真值

反码-原码

正数:即原码,正数反码补码原码相同

负数:即反码转原码,除符号位全部取反

反码-补码

正数:即原码,正数反码补码原码相同

负数:即反码转补码

末尾加一即为补码

反码-移码

正数直接取反符号位,负数先加一转为补码后符号位取反

补码-原码

正数:即原码,正数原码反码补码相同

负数:即补码求原码

除符号位全部取反,然后再加一,即对补码求一次补码得到原码

补充:已知y补码,求-y补码

-y补码=y补码连同符号位,各位取反,末位再+1

补码-真值

正数:即原码求真值,正数补码反码原码相同,即数值位,二进制真值

负数:即补码转原码,原码转真值

除符号位全部取反,然后再加一,即对补码求一次补码得到原码

即负号加数值位,得到负的二进制真值

补码-反码

正数:即补码,正数原码补码反码相同

负数:即补码转原码,原码转补码

除符号位全部取反,然后再加一,即对补码求一次补码得到原码

除符号位外再度取反得到反码

补码-移码

正数:符号位取反

负数:符号位取反

移码-真值

直接将机器数转为十进制数,然后减去偏移量得到十进制真值

真值转移码大不了直接加上偏移量然后带符号!

移码-反码

符号位取反得到补码

正数:反码补码原码相同,即为反码

负数:补码转原码,原码转反码

符号位不变其他位取反,加一得到原码

符号位不变其他取反得到原码

移码-补码

符号位取反得到补码

移码-原码

符号位取反得到补码

正数:补码原码反码一样,即为原码

负数:补码转原码

符号位不变其他位取反,加一得到原码