数据存储——浮点型在内存中的存储

——数据类型介绍

——整形在内存中的存储

——*浮点型在内存中的存储

1. 数据类型介绍

  1.1 数据类型的基本归类

    1.1.1整形家族

      char short int long 的signed型和unsigned型(char也可视为整形)

    1.1.2 浮点型家族

    1.1.3 构造类型

    (1)数组

    (2)结构体

    (3)枚举 enum

    (4)联合 union

    1.1.4 指针类型

    1.1.5 空类型

     void 表示空类型(无类型) 通常应用于函数的返回类型、函数的参数、指针类型。

2. 整形在内存中的存储

  2.1 原 反 补 码

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

(2)使用补码储存的原因:

      使用补码,可以将符号位和数值域统 一处理

      加法和减法也可以统一处理(CPU只有加法器)

      此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路

2.2 大小端

    2.2.1 数据的高低字节序

    2.2.2 判断大小字节序

   (1)a=1,  *(*char)&a

   (2)联合

3.*浮点型在内存中的存储

  3.1 浮点型的储存规则

    3.1.1表示形式:根据国际标准IEEE(电气和电子工程协会) 754,任意

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

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

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

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

         (3)2^E表示指数位。

        2)eg:

          十进制 3.0的二进制为11.0 转化为上述的形式1.1*2^1

          (1)符号位为正:(-1)^0   S=0;

          (2)M有效位:M=1.1;

          (3)指数位:2^1 E=1;

         十进制-3.0二进制为-11.0转化为-1.1*2^1

         (1)S=-; (2)M=1.1; (3)E=1

    3.1.2在内存中的储存方式:(分为单双精度)

       1)单精度浮点数储存模型(32bit位):

       2)双精度浮点数储存模型(64bit位):

       3)S在内存中的储存:浮点数为正:S储存0;   浮点数为负:S储存1

       4)E 在内存中的储存:(以单精度浮点数为例):

         8个bit位的取值范围为0-255,但是E可以为负数(eg:十进制0.625的二进制为0.101,表示为上述形式为1.01*2^-1,真实值E为-1),所以存入内存中的E需要加上一个中间数127(双精度浮点数11bit位取值范围0-2047,中间数为1023),所以内存中的储存值E=127+E真实值(上述形式,双精度浮点数同理,储存值E=1023+ 真实值E)。

由此我们可以得到几个特殊点(以以单精度浮点数为例,双精度改变中间值同理):

         (1)当E的8个bit位全为0时,E真实值=E储存值(全0)-127=0-127=-127, -1^S*M*2^-127趋近于无穷小。

         (2)当E的8个bit位全为1时,E真实值=E储存值(全1)-127=255-127=128, -1^S*M*2^-127趋近于无穷大。

         (3)E 的8个bit位不全为1或者全为0时,E真实值 =E储存值-127;

        5)M 在内存中的储存:(以单精度浮点数为例)

         由于用(-1)^S*M*E表示时,1<=M<2,此时M小数点前面的1可以省略,M在内存中只需要存储M小数点后面的值。(eg: -1^1*1.10110*2^3, M真实值=1.10110, 放入内存时省略小数前面的1,储存小数点后面的10110到内存的23个bit位中不其的补上0,即为M储存值=101 1000 0000 0000 0000)

    3.1.3示例:

         上述我们已经介绍了浮点数表示形式和在内存中存储方式,下面我们就以十进制-20.125数字作为例子进行展示(单精度储存):

        1)十进制数字-20.125的二进制为-10100.001

        2)按照国际标准表示为-1^(1)*1.0100 001*2^4; S=1; M真实值=1.0100001;  E真实值=4

        3)内存中储存:S=1; M储存值= 0100001; E 储存值=4+127=131=1000 0011

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值