数据在内存中的存储(原,反,补码,浮点数的存储细节及存储规定)

文章目录

  • 一、数据分类
  • 二、整形在内存中的存储
    • 1.原,反,补码。
    • 2.大小端。
  • 三,浮点型在内存中的存储
  •       1.存储规则
  •        2.存储规定
  •        3.例子

一、数据类型分类

类型的意义:

                     使用这个类型开辟内存空间的大小 (大小决定了使用范围)。

整形家族:

               char    short        int          long (都包括unsigned signed)

               对char是整形家族是否感到诧异?

                                                               ——字符本质是ASCII码值,是整形。

浮点数家族:

             float      double 

结构类型:

                数组类型         结构体类型(struct)    枚举类型(enum)     联合类型(union)

指针类型:

              int *pi;  char*pi; float*pi

          void *pv——具有泛型,可以接受任意类型的地址,但void型指针不能直接解引用,也不                                      能 void*(pv + || - 整数)。

空类型:

             void表示空类型(无类型)——通常运用函数的返回类型,函数的参数,指针的类型。


二、整形在内存的存储

2.1.原,反,补码

整数的三种的表示方法都有符号位和数值位,符号位是第一位,用0表示正,用1表示负。

无符号的都当作正整数,数值位正数的原 反 补码相同。

负整数

           原码——按着正负数的形式翻译成二进制。

           反码——符号位不变,其余按位取反。

           补码——反码加一。

 补码取反加一也可以得到原码哟!!!

对于整形来说:数据存放内存中其实存放的是补码。

2.2大小端

9b1d13f819ef4411b358d400ea07acf5.png

 为啥20在内存应该显示是00 00 00 14,可最后显示的是14 00 00 00?

那是因为大小端的原因。

大端:

        是指数据的低地位保存在内存的高地址中,而数据的高地址保存在内存的低地址中。

小端:

     是指数据的低地位保存在内存的低地址中,而数据的高地址保存在内存的高地址中。

      ——大反小同

所以你知道为啥了吗?

f59d55bd2bc64736bd61d9d839a4919c.png


那你想知道你自己的电脑存储是大端存储还是小端存储?

8ab8c0d60a814564acf34c3ca798d064.png

 

 


三、浮点数在内存的存储

3.1.存储规则

整数在内存的存储形式是反码,那浮点数呢?

758985695f8545d2af2d1b4e59d227c9.png

 那是因为浮点数在内存的存储的形式不是反码。

任意一个二进制浮点数v可以表示成下面的形式:

    (-1)^S*M*2^E

                             ——(-1)^S 表示符号位,S=0,v为正数,当S=-1,v为负数。

                             ——M表示有效数字,大于等于1,小于等于2。

                             ——2^E表示指数位。

是不是有点懵逼了? 别急,别急,那就举例子说明一下。

十进制的5.0,写成二进制是101.0,(别忘记了,小数点后面是二的负几次方)相当于(-1)^0*1.01*2^2。几次方可以类比十进制。


3.2.存储规定

e84a17a2da184a4282f7157c98d7eea9.png

 我的图都好丑啊,丑萌萌的。

特别规定:

              M只保留小数点后面的位。(读取的时候要把第一位的1加上)

             指数E 如果是一个无符号整数,E要加上中间值(float的中间值是127,double的中间值是1023)。 

                     E不全为0或不全为1,读数时即指数E的计算值减去中间值,再将有效数字M前加上第一位的1。 

                     E全为0,读数时,指数E等于1减去中间值,有效数字M不再加上第一位的1。这样是还原0.0000……小数,无限接近0。


四、浮点数与整形存储差异举例346146d8add04b2aa968f646c98a0876.png

dfbb1c84999a4119a2650de0970e3429.png

 

 

 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值