负数在计算机中怎样存储?

 转自:原文链接:https://blog.csdn.net/littesss/article/details/70495810

一、什么是原码、反码、补码?

原码:10进制转换成2进制是原码,只不过正数的原码是本身符号位为0,负数的原码符号位为1(以下篇幅均以单字节为例:10进制1的原码是0000 0001,10进制-1的原码是1000 0001)。

反码: 正数的反码是本身,负数的反码是负数的原码0变为1,1变为0   (-1的原码是1000 0001   它的反码就是 1111 1110,)。(注意负数求反码时候的符号位不参与变换)。

补码: 正数的补码是本身,负数的补码就是负数的反码+1 ;

于是 -1 的原码是 1000 0001 ,  它的反码就是 1111 1110 , 它的补码就是 1111 1111)。

如果是有符号的数据类型,规定最高位(符号位)正数为0,负数为1(规定!!!)

总结:正数的原码,反码 ,补码三值合一, 负数的原码,反码,补码不同。

二、为什么要设置反码,补码?

有人会有疑惑为什么要用反码,补码,不直接用原码呢?先搞清楚一点,反码 / 补码 / 原码 是针对二进制数而言,计算机若用原码相加减,正数加正数不会出错,然而正数和负数原码相加就会出错

 三、 二进制的减法

例如在二进制中计算5-3,计算机中实际是5+3的补码, 如下图:   

                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值