原码、反码、补码和移码

        关于原码、反码、补码和移码的知识, 已经学习过很多遍了,但是一到做题的时候才发现,那些知识已经全都忘了。经过反思, 得出结论:之所以忘得快,是因为没有总结,不过还不晚,现在就来总结一下吧!

             【起源】

        数据表示:各种数值在计算机中的表示的形式成为机器数,其特点是采用二进制计数制,数的符号用0和1表示,小数点则隐含,表示不占位置。机器数对应的实际数值称为数的真值。

        机器数有无符号数和带符号数之分。无符号数表示正数,在机器数中没有符号位。带符号数,机器数的最高位是表示正、负的符号位,其余表示数值。

        为了便于运算,带符号的机器数可采用码制的编码方法。

       【原码、反码补码和移码】

        原码

        如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩下的n-1位表示概数的绝对值。位数不够的用0补全。

例如(n=8) :X=+101011 , [X]原= 00101011  

                     X=-101011 , [X]原= 10101011 

        反码

        反码就是在原码的基础上,正数的反码与原码相同,负数的反码则是其符号位不变其他位按位取反(就是0变1,1变0)就可以了。

例如:X=+101011 , [X]原= 00101011 ,[X]反=00101011

            X=-101011 , [X]原= 10101011 ,[X]反=11010100

注:0的原码跟反码都有两个,因为这里0被分为+0和-0。

        补码

        正数的补码与其原码反码相同;负数的补码则等于其反码的末尾加1。

例如:X=+101011 , [X]原= 00101011 ,[X]反=00101011,[X]补=00101011

            X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]补=11010101

        移码

        移码最简单了,不管正负数,只要将其补码的符号位取反即可。

例如:X=+101011 , [X]原= 00101011 ,[X]反=00101011,[X]补=00101011,[X]移=10101011

            X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]补=11010101,[X]移=01010101 

注:0的补码和移码是唯一的,如果机器字长为8那么[0]补=00000000,[0]移=10000000

       【总结】

        一定要记住,正数的原码、反码、补码都相同,只有移码是符号位取反;负数的反码是其原码绝对值按位取反,补码是其反码末尾加1,移码是其补码符号位取反。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值