负数补码,负数的补码怎么变回原码?


负数补码,负数的补码怎么变回原码?


【负数补码,负数的补码怎么变回原码?】已知一个数的补码 , 求原码的操作分两种情况: (1)如果补码的符号位为“0” , 表示是一个正数 , 所以补码就是该数的原码负数补码 。(2)如果补码的符号位为“1” , 表示是一个负数 , 求原码的操作可以是:符号位为1 , 其余各位取反 , 然后再整个数加1 。例如 , 已知一个补码为11111001 , 则原码是10000111(-7):因为符号位为“1” , 表示是一个负数 , 所以该位不变 , 仍为 “1”;其余7位1111001取反后为0000110;再加1 , 所以是10000111 。扩展资料:总结:已知一个数的补码 , 求原码的操作其实就是对该补码再求补码 。补码转换为原码:符号位不变 , 数值位按位取反,末位再加1 。即补码的补码等于原码 。正整数的原码、反码和补码是一样的 , 即看到符号位(第一位)是0 , 就可以照着写出其他两种码 。所以已知正数的补码 , 求其原码 , 两个数是一样的 。
[ 0]原码=0000 0000 , [-0]原码=1000 0000[ 0]反码=0000 0000 , [-0]反码=1111 1111[ 0]补码=0000 0000 , [-0]补码=0000 0000你会发现 , 0和-0的补码是一样的 。即 0的补码只有一种表示 。这里解释一下[-0]补码是怎么得来的 。负数的补码就是反码整体加一 。符号位上的进位舍弃 。(所以 , 舍弃了符号位的补码的第一位是数值位 , 不是符号位 , 符号位舍弃了)另外解释一下原码符号位和补码符号位的关系 , 补码的符号位不是保持原码的第一位不变 , 而是 符号位不变 , [-0]反码的第一个1是符号位 , 尾数中的7个1是数值位 , 尾数加一后 , 数值位产生了进位 , 1111 1111 1=1 0000 0000(计算补码的过程中 , 并不是先保证第一位不变 , 而是保证符号位不变 , 保证补码规则是反码整体加一) 。所以 , 补码能表示的数的个数中 , 比原码反码少了一个 , 所以补码可以多表示一个真值为-128的数 。但是 , 多表示的这个数-128比较特殊 , 只有原码和补码 , 没有反码 。扩展资料:数值在计算机中是以补码的方式存储的 , 在探求为何计算机要使用补码之前 , 让我们先了解原码 , 反码和补码的概念 。对于一个数 , 计算机要使用一定的编码方式进行存储 。原码 , 反码 , 补码是计算机存储一个具体数字的编码方式 。一个数在计算机中的二进制表示形式 , 叫做这个数的机器数 。机器数是带符号的 , 在计算机用一个数的最高位存放符号 , 正数为0 , 负数为1 。比如 , 十进制中的数2 , 计算机字长为8位 , 转换成二进制就是[00000010] 。如果是 -2 , 就是 [10000010]。因为第一位是符号位 , 所以机器数的形式值就不等于真正的数值 。例如上面的有符号数 [10000010] , 其最高位1代表负 , 其真正数值是 -2 而不是形式值130([10000010]转换成十进制等于130) 。所以将带符号位的机器数对应的真正数值称为机器数的真值 。参考资料:

猜你喜欢