原码、反码、补码,你玩转了吗?

1、由来
        原码、反码和补码的出现有以下几点原因:一个是由于计算机的硬件设计,计算机的运算只能以二进制的形式进行;再便是根据冯.洛伊曼的经典计算机框架体系,计算机由控制器、运算器、存储器、输入和输出五个部分组成,计算机的运算器只能做加法,但实际的运算过程中有减法的运算,而减法可以看成一个数的加上另一个数的负数,但这种方式需要一个符号位,即负号和正号。原码、反码和补码的出现就是为了解决计算机中存储数字符号位的问题以及让计算机能够计算有减法参与的加减法运算。

2、概念
符号位:一个数二进制位的最高位表示符号位,0表示正数,1表示负数(此处指有符号位的原码、反码和补码);
原码:一个数的二进制形式,再在它最高位加上一个符号位的二进制值,即是这个数的原码(符号位(0/1)+  数值部分(该数的二进制值));
反码:01、若这个数是正整数,那么它的反码与原码相同;
           02、若这个数是负整数,那么它的符号位为1,其余各位(数值位)按位取反=>    1->0 / 0->1;
补码:01、若这个数是正整数,那么它的反码与原码相同;
           02、若这个数是负整数,那么它的符号位为1,其余各位(数值位)按位取反后,再在数值末尾+1;
概念小结
    正整数:补码  =   反码  =  原码;
    负整数:反码  =   符号位为1,原码数值部分按位取反;
                  补码  =   符号位为1,原码数值部分按位取反,末尾再+1;

3、转换
因计算机中用二进制对数字进行存储以及运算,1bit为一个二进制位,8bit为1byte(一个字节,即一个英文字母或者半个汉字),此处便用8位二进制来举例说明原码、反码和补码之间的转换。
已知一个十进制整数
正整数
[+7]原  =  0 0000111(符号位为0);
[+7]反  =  0 0000111(数值部分等于原码);
[+7]补  =  0 0000111(数值部分等于原码);
负整数
[-7]原  =  1 0000111(符号位为1);
[-7]反  =  1 1111000(符号位为1,数值部分按位取反);
[-7]补  =  1 1111001(符号位为1,数值部分先按位取反,末尾再+1);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值