1.整数在内存中的存储
整数的二进制表示方法有原码,反码,补码三种。均有符号位和数值位两部分。符号位0表示正,1表示负。其余为数值位。
对于整型来说,数据存放内存中其实存放的是补码。
正整数的原,反,补码都相同。
负数三种表示方法不同。
2.浮点数的存储
根据国际标准,任意一个二进制浮点数V可以表示为一下形式:
V = (-1)^S * M * 2^E
(-1)^S表示符号位,S为0,V为正数,S为1,V为负数。
M表示有效数字,M大于1,小于2.
2^E表示指数。
如:
十进制的5.0,写成二进制是101.0,相当于1.01*2^2。
按以上格式可以得出S=0, M=1.01,E=2。
十进制的-5.0,写成二进制是-101.0,相当于-1.01*2^2。
S=1, M=1.01, E=2。
根据国际标准:
对于32的位浮点数,最高的一位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。
对于64的位浮点数,最高的一位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。
浮点数存储中对有效数字M和指数E有规定:
国际规定, 在计算机内部保存M时,默认这个数第一位总是1,因此可被舍去,只保留后面 .xxxx 部分。保存1.01时只保存01读取时再把1加上。这样做节省了一位有效数字。
E为无符号整数,若E为8位,它的取值范围是0到255,若E为11位,它的取值范围为0到2047。科学计数法的E会出现负数,所以规定,存入E的真实值必须在加上一个中间数,对于8位的E,中间数是127。对于11位的E中间数是1023。如,2^10的E是10所以保存为32位浮点数时,必须保存为10+127=137。即10001001.