了解数据的存储

数据分类

存入计算机的数据分成两类:1.整数 2.浮点数

这两类数据均是用各自的方式转换成二进制数据存储到申请的空间中。

并且是以字节为单位按照一定顺序存储在申请的内存中。

整数存储((怎么存入存储顺序中会介绍))

有符号整数

有正整数和负整数之分,他们直接转化成二进制。                                                                       

eg  :  int a = 3;  //举例正整数如何转二进制                                                                                                 3 -----> 11 //十进制先转二进制                                                                                                        00000000 00000000 00000000 00000011 //由于要将  11 存入int类型,所以先扩增成32位。        由于正整数的原反补相同所以 00000000 00000000 00000000 00000011就是我们要存入的数据

eg : int a = -3;  //举例正整数如何转二进制                           -3 -----> (1)11 //十进制先转二进制            10000000 00000000 00000000 00000011 //由于要将  11 存入int类型,所以先扩增成32位。         负数的原反补不相同,负数原码到补码,取反加一 ,得到11111111 11111111 11111111         11111101 ,这就是我们要存入内存的二进制数据。

无符号整数

无符号整数就直接将数据转换成二进制数据再补充0。

浮点数存储

任何二进制浮点数都可以转换成 V = (-1)S ∗ M ∗ 2^E

例如:⼗进制的-5.0,写成⼆进制是 -101.0 ,相当于 -1.01×2^2 。那么,S=1,M=1.01,E=2。
           然后将S,M,E,分别扩充成和你申请空间相同的二进制数据比如存入float

    float       1     10000001     01000000000000000000000                                                                                  S          E                            M 

E的写入有说法,存入float 原本得到的加127,存入double1023。                                                     存M时直接存小数点后面的就好勒。

存储顺序

按以上的方法我们可以求得各个数据的二进制,但是这些二进制会统一遵循两个存储顺序在计算机中存储。大端字节存储 与 小端字节存储

我们将二进制数据以字节划分 00000000 00000000 00000000 00000011 ------->

                                                                    0000 0000 0000 0000 0000 0000 0000 0011                                                                                   高位字节                                                  低位字节                            内存中每个字节有自己的地址,我们申请的的空间是连续的,从低地址以此到高地址

小端字节存储:低位字节存储到低地址   0000 0000 0000 0000 0000 0000 0000 0011 这个数据

                            低地址                        ~ 依次 ~                                   高地址                                                                 0011 0000 0000 0000 0000 0000 0000 0000 

大端字节存储:低位字节存储到低地址   0000 0000 0000 0000 0000 0000 0000 0011 这个数据

                            低地址                        ~ 依次 ~                                   高地址                                                                 0000 0000 0000 0000 0000 0000 0000 0011                                          

      最终存入内存的就是这些数据   

数据的取出

整数的取出就是存储的相反过程。

值得一说的是浮点数的取出分三种

其一、E有0有1

        那就是存储的相反过程。

其二、E全是0

        那我们拿出来的就是    0.xxxxxx的小数,无限接近与零。

其三、E全是1

        那我们拿出来的就是一个超级大的数字。

理由就是,1 * 10^127那和大了吧,E就是代表的那个127同理,全是0就是-127
        最后

诸君共勉!!!

你可能感兴趣的:(c语言)