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

——数据类型介绍

——整形在内存中的存储

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

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
    评论
浮点型数据内存存储方式是按照IEEE 754标准进行存储的。IEEE 754标准规定了两种浮点数的表示方法:单精度浮点数和双精度浮点数。其,单精度浮点数占用4个字节,双精度浮点数占用8个字节。 在IEEE 754标准浮点数存储格式由三部分组成:符号位、指数位和尾数位。其,符号位用来表示浮点数的正,指数位用来表示浮点数的数量级,尾数位用来表示浮点数的精度。 具体来说,单精度浮点数存储格式如下所示: | 31 | 30 - 23 | 22 - 0 | |----|---------|--------| | S | E | M | 其,S表示符号位,占用1个bit;E表示指数位,占用8个bit;M表示尾数位,占用23个bit。双精度浮点数存储格式类似,只是指数位和尾数位的长度不同。 在计算机浮点数存储方式是按照二进制补码进行存储的。具体来说,符号位用0表示正数,用1表示数;指数位和尾数位都用二进制补码表示。 举个例子,如果要将3.14这个单精度浮点数存储到计算机,首先需要将3.14转换成二进制数。具体来说,可以使用以下方法进行转换: 3.14 = 11.0010001111...(二进制) 然后,根据IEEE 754标准的规定,将上述二进制数按照符号位、指数位和尾数位的顺序存储到计算机。具体来说,可以将上述二进制数转换成以下形式: | 0 | 10000000 | 10001100100011110101110 | |---|----------|------------------------| | S | E | M | 其,符号位S为0,表示正数;指数位E为10000000,表示指数为128(因为E需要加上一个固定的偏移量127,才能表示实际的指数值);尾数位M为10001100100011110101110,表示尾数为1.5707964(因为M需要除以2的23次方,才能表示实际的尾数值)。 因此,3.14这个单精度浮点数在计算机存储方式为: 01000000000100110010001111010111

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值