数据类别
整数分为三种:
- 正整数
- 负整数
- 零
此三种中,在计算机的存储中,可以将0和正整数归为一类
底层存储
计算机在底层存储这些整数的时候,存储的是数据的二进制数的补码,由0和1组成,对于第一类(正整数和0)来讲,只要符合二进制规则即可存储,那么对于负数来讲,无法直接以01代码的形式写入,这时候就出现了一种特定的存储方法,仍然以01代码为基础,只是改变了计数的规则
第一类:二进制编码 == 反码 == 补码
第一类较为简单,在此不做过多解释,对于不知道二进制编码和反码、补码的请自觉翻阅以前的笔记
第二类:虽然存储的都是补码,但负数的补码为他的反码加1,而他的反码为他的相反数的二进制编码和0位异或之后的编码
实例:
i = 1;二进制编码为:00000000 00000000 00000000 00000001
j = -1;相反数的二进制编码为:00000000 00000000 00000000 00000001
此时,i在计算机当中存储的值就是这个二进制的补码也就是他本身
对于j来讲,存储的是他相反数二进制编码和0唯异或之后的编码,并且加1,即存储的值为
11111111 11111111 11111111 11111111
其最高位为符号位:为1则为负数,为0则为正数
原因
为什么,在计算机中存储的补码,而不搞的简单一点?何必呢?
这是因为计算机的CPU当中只有加法器,而没有减法器和其他算法器。
因为一切其他运算都可以用加法来表示,存储补码能够大大加大计算机的运算能力,实属伟大发明。