美文网首页
计算机存储数据的方式(2)

计算机存储数据的方式(2)

作者: studystudy | 来源:发表于2017-09-24 20:35 被阅读0次

根据IEEE 754标准,浮点数的表示形式如下:


S为数的符号位

    第一个域:为符号域。其中0 表示数值为正数,而 1 则表示负数。


P为阶码,通常用移码表示

    第二个域为指数域,对应于我们之前介绍的二进制科学计数法中的指数部分。

    指数阈:通常使用移码表示:

   (移码和补码只有符号位相反,其余都一样。对于正数而言,原码、反码和补码都一样;对于负数而言,补码就是其绝对值的原码全部取反,然后加1(不包括符号位))。

     其中单精度数为 8 位,双精度数为 11 位。以单精度数为例,8 位的指数为可以表达 0 到 255 之间的 255 个指数值。

     但是,指数可以为正数,也可以为负数。

     为了处理负指数的情况,实际的指数值按要求需要加上一个偏差(Bias)值作为保存在指数域中的值,单精度数的偏差值为 127(0-111 1111)(8位),而双精度数的偏差值为 1023(0-1 1111 1111)(10位)。

      比如,单精度的实际指数值 0在指数域中将保存为 127;而保存在指数域中的 64 则表示实际的指数值 -63。偏差的引入使得对于单精度数,实际可以表达的指数值的范围就变成 -127 到 128 之间(包含两端)[-127, 128]。

M为尾数,用原码表示。

      图例中的第三个域为尾数域,其中单精度数为 23 位长,双精度数为 52 位长。

      除了我们将要讲到的某些特殊值外,IEEE 标准要求浮点数必须是规范的。

      这意味着尾数的小数点左侧必须为 1,因此我们在保存尾数的时候,可以省略小数点前面这个 1,从而腾出一个二进制位来保存更多的尾数。这样我们实际上用 23 位长的尾数域表达了 24 位的尾数。

        比如对于单精度数而言,二进制的 1001.101(对应于十进制的 9.625)可以表达为 1.001101 × 23,所以实际保存在尾数域中的值为 00110100000000000000000,即去掉小数点左侧的 1,并用 0 在右侧补齐。

目前,计算机中主要使用三种形式的IEEE 754浮点数,如下表所示

举例

下面举例说明27.0f在二进制文件中怎么表示。

float共计32位,折合4字节

由最高到最低位分别是第31、30、29、……、0位

31位是符号位,1表示该数为负,0反之。

30-23位,一共8位是指数位。

22-0位,一共23位是尾数位。

每8位分为一组,分成4组,分别是A组、B组、C组、D组。

每一组是一个字节,在内存中逆序存储,即:DCBA

27.0表示成二进制为:11011.0

用科学计数法表示为1.110110*2^4,现在我们要的尾数和指数都出来了。

尾数为:1101 10 (删除前面的第一个1,因为用科学计数法表示,二进制中第一个永远都为1,计算机在存储的时候就没有存储这个1,只存储小数点后面的位数)   不足23位,补0,就是1011 0000 0000 0000 0000 000(23位)

指数:为4 。一共8位,可以表示范围是0 ~ 255的无符号整数,也可以表示-128~127的有符号整数。但因为指数是可以为负的,所以为了统一把十进制的整数化为二进制时,都先加上127。

所以:4+127=131  变成二进制就是10000011

27.0用二进制表示就是:

加上第31位的符号位0

就是0100 0001 1101 1000 0000 0000 0000 0000

十六进制就是:41 D8 00 00

再看一个数27.5,二进制为11011.1

1.10111*2^4

尾数(小数点后的数)10111,补够23位 1011 1000 0000 0000 0000 000

指数:4,加上127,就是131,二进制1000 0011

用二进制表示就是 (符号数位1位)0 (指数位8位)1000 0011 (尾数位23位)1011 1000 0000 0000 0000 000

写成二进制标准形式:0100 0001 1101 1100 0000 0000 0000 0000

写成16进制就是41 DC 00 00

相关文章

  • 计算机存储数据的方式(2)

    根据IEEE 754标准,浮点数的表示形式如下: S为数的符号位 第一个域:为符号域。其中0 表示数值为正数,...

  • 深入八种常见的数据结构

    什么是数据结构? 所谓数据结构就是计算机组织存储数据的方式。通俗的讲就是将数据以怎样的结构存储到计算机里面。JS中...

  • 核心数据结构

    一、什么是数据结构在计算机科学中,数据结构(英语:data structure) 是计算机存储、组织数据的方式。 ...

  • Python(六)数据结构

    -数据结构:是计算机存储、组织数据的方式,或者说是用来存储一组相关数据的 -python内建数据结构: •列表 •...

  • 数据结构与Python的数据结构

    1.什么是数据结构? 数据结构就是计算机存储、组织数据的方式。 2.常见的数据结构 1.数组 2.栈 3.队列 4...

  • 第5讲、数据单位和进制转换

    数据在内存中的保存方式 【掌握】 1、存储的空间单位 数据如何保存 2、进制转换  计算机支持的最大进制是多少进制...

  • 1.2进制以及进制之间的转换

    思考1 为什么要使用计算机? 计算机可以存储数据,并计算数据 思考2 数据存在哪里? 存储器 在计算机中,指令主要...

  • Python 核心数据结构

    一、 什么是数据结构 在计算机科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式...

  • 八、核心数据结构

    一、什么是数据结构 在计算机科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。...

  • 8 | 列表和元组

    一、 什么是数据结构 在计算机科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式...

网友评论

      本文标题:计算机存储数据的方式(2)

      本文链接:https://www.haomeiwen.com/subject/ogllextx.html