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.