模
“模”是指一个计量系统的计数范围。正如秒针从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’的情况,且不便于人类读数;
补码:由原码转化成,直接加减,用于计算机系统计算与存储数字,不便于人类读数;
以上是本人参考多方资料,用自己的话整理出来的,算是一个学习总结吧,有所缺漏或不当之处,请指正,谢谢!