整数在内存中的存储
整数在内存中存储的方式是二进制,二进制有原码、反码、补码三种表现方法
正数的反码、补码就是原码
原码就是直接将十进制的整数转换为二进制
反码则是将原码除了符号位不变其他按位取反(将1变0,0变1)
补码则是在反码的基础上 +1
整型数据在内存中存放的就是补码
浮点数在内存中的存储
- 浮点数在内存中通过二进制浮点数表示为以下公式
- (-1)^S 表示符号位,S=0时为整数,S=1时为负数
- M 表示有效数字,M大于等于1,小于2
- M在存储时省略前面的1,将1.xxx中的xxx存入
- 2^E 表示指数位
例如:111.0 相当于 1.11 * 2^2,此时S=0,M=1.11,E=2
对于32位浮点数(float)
最高位存储符号位S,紧接着8位存储E,剩下23位存储M
对于64位浮点数(double)
最高位存储符号位S,紧接着11位存储E,剩下52位存储M
E是无符号整数在读取过程中
- E不全为1或不全为0:通常将E的计算值减去127得到真实值,再将有效数字M前面加上第一位1
- E全为0:表示+-0,即无穷小
- E全为1:表示+-无穷大