整数,浮点数在内存中的存储

整形类型


浮点数类型:

整形在内存中的存储:

首先整形在计算机中都是以二进制数进行保存和运算的,在计算机中符号数有三种形式,即原码,反码,补码。在运算和存储不是以原码来计算的,而是以补码来计算的。

原码:直接将二进制按照正负数的形式翻译成二进制。

反码:将原码符号位不变,数值位按位取反,即0变1,1变0。

补码:将反码加1就得到了补码。

而对于整形而言,在计算机中存储就是以补码的形式。其原因是由于补码的设计使得二进制减法可以转化成加法,这样CPU只需要设计加法器就行了,不用再专门设计减法器了。结构简化也有利于CPU运行速率的提高。

我们看看在内存中的存储


 
 

这里我们会发现在内存中还有一个问题,就是这个地址是倒着存入的。

这里有两种存储方式:(1)小端存储:数据的低位存在内存的低地址,数据的高位存在高地址。

                                        (2)大端存储:数据的低位存在内存的高地址,数据的高位存在低地址。



浮点数在内存中的存储;

任何一个浮点数可以写成

此外这里还有一些对于M和E的特别规定:

1.对于M:在计算机内部保存M时,默认这个数的第一个数字为1,所以将这位舍去,只保留小数点后面的部分,如1.11,只保存11,等读出的时候在降低以为的1加上,这样节省了一位有效数字,是有效数字可以增加一位。

2.对于E:再存入内存中单精度32位的必须加中间数127,对于双精度64位的必须加上中间数1023,如2^6,在单精度时E为:1000 0110.

   当E为全0:E等于1-127或者1-1023,此时有效数字M不再加上第1位的1,即此时为其真实值。

   当E为全1:如果M全为0,表示正负无穷

   当E不为全1和全0:指数E减去中间数,的其真实值,再将M前加上第1位的1;





猜你喜欢

转载自blog.csdn.net/skinwhite/article/details/75946287
今日推荐