原码 反码 补码 移码的关系(精简总结)
http://www.cnblogs.com/seer/p/3395888.html
依然是为了避开那些繁琐复杂晦涩的概念与术语,为了确保能清晰的梳理它们之间的关系,现分为两部分说明
1. 机器数 是 正数 符号位为0
原码 = 反码 = 补码
eg:机器码长度为8,求X(6)10原码 反码 补码 移码
[X]原 = 00000000+110=00000110
[X]补=[X]反=[X]原 =00000110
[X]移=10000110
(绿色为符号位)
2.机器数 是 负数 符号位为1
反码 = 原码(符号位除外)各位取反而得到
补码 = 原码(除符号位外)各位取反,并在未位加1而得到
eg:机器码长度为8,求X(-6)10原码 反码 补码 移码
[X]原 = 10000000+110=10000110
[X]补=11111001 +1=11111010
[X]反=11111001
[X]移=01111010
(绿色为符号位)
=============================
移码 = 补码的符号位直接取反
=============================
应用示例
已知补码 求原码
原码 = 补码取反加1 (符号位除外)
[X]补=1101001 求[X]原。
[X]原 = 1010110+1 =1010111
总结:在换算过程中符号位始终保持不变(移码除外)。