C语言基础知识—计算机内存数值存储方式
1>.原码
一个数的原码(原始的二进制码)有如下特点:
最高位作为符号位,0表示正,1表示负;
其它数值部分都是数值本身绝对值的二进制数;
负数的原码是在其绝对值的基础上,最高位变为1;
举个例子,我们用一个字节的原码来表示+15,-15,+0,-0
+15 : 0000 1111
-15 : 1000 1111
+0 : 0000 0000
-0 : 1000 0000
原码表示方法简单易懂,带有符号数本身转换方便,只要符号位还原即可,但当两个整数相减或不同符号相加时,必须比较两个数哪个绝对值大,才能决定谁减谁,才能确定结果是正还是负,所以原码不便于加减运算。
2>.反码
一个数的反码(原始的二进制码)有如下特点:
对于正数,反码与原码相同;
对于负数,符号位不变,其它部位去反;
举个例子,我们用一个字节的反码来表示+15,-15,+0,-0
+15 : 0000 1111
-15 : 1111 0000
+0 : 0000 0000
-0 : 1111 1111
反码运算也不方便,通常用来作为求补码的中间过渡
3>.补码
在计算机中,数值一律用补码来存储。补码特点如下:
对于正数,原码,反码,补码相同;
对于负数,其补码为它的反码加1;
补码符号位不动,其他为求反,最后整个数加1,得到原码;
举个例子,我们用一个字节的补码来表示+15,-15,+0,-0
+15 : 0000 1111
-15 : 1111 0001
+0 : 0000 0000
点击加载更多评论>>