浅 浅谈原码、补码和反码

“模”是指一个计量系统的计数范围。正如秒针从1秒转到60秒,又会重新从1秒开始,而不是继续计61秒。同样的,计算机中表示数字也有一个计量系统,超过某个数值就会溢出,溢出之后就要对原数值进行求模运算,计量器上只能表示出模的余数。
假设一个系统最大计数范围是0~9,那么8+3 = 1

原码

原码就是将数字转化为2进制数的一种形式,最高位为符号位,表示正负,二进制数中数字多少由位数决定,如int类型的7,原码为00000111。
但如果用原码直接进行计算就会出现如1+(-1)= 00000001 + 10000001 = -2,的情况,所以这时候就引入反码的概念。

反码

来自百度百科
正数的反码就是它本身,负数的反码是它的原码除符号位外,各位取反得到的,这样的话计算起来就解决了用原码计算错误的问题。
[-1] = [10000001] = [11111110]
[+1] = [00000001] = [00000001]
1+(-1)=11111110 + 00000001 = [11111111]=[10000000]=-0
用反码来计算已经可以得到正确的结果了,但是对于‘0’这个值来讲,却会出现了+0 和-0 这种情况,我们知道0分正负没有多大意义的,所以又出现了补码。

补码

来自百度百科
正整数的原码与补码相同,负整数的补码就是将对应正整数的各位取反再加一,或者是它的原码的符号位不变,其余位数取反,再加一。
这时候计算1 + (-1)= (00000001) +(11111111) =100000000
由于存储量只有8位,则最高位的1要去除,就是1+(-1)=0,所得结果就是正确的,这样就能直接进行加减的计算,在计算机的内部也是通过补码来储存数字的。

总结

对于一个数,如 :
+7 =(00000111) =(00000111) =(00000111)
-7 =(10000111) =(11111000) =(111111001)
各种码的优缺点:
原码:便于人读数,可以直接读出一个数的二进制以及正负,但是正负数不能直接相加;
反码:由原码简单转化而成,可以直接计算加减,但会出现±‘0’的情况,且不便于人类读数;
补码:由原码转化成,直接加减,用于计算机系统计算与存储数字,不便于人类读数;

以上是本人参考多方资料,用自己的话整理出来的,算是一个学习总结吧,有所缺漏或不当之处,请指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值