`

数据表示(浮点)

 
阅读更多

先说说历史:

    众所周知,浮点数是用来表示远远大于或者小于0的数以及无限趋近于1的数,在近似计算中也扮演着重要的角色。20世纪80年代初,各个计算机生产厂家都发明了自己的一套表示和运算浮点数的规则,当时他们认为易实现比精度更为重要。这个现象直到80年代中期,IEEE 754标准出来才得到改善。754标准始于1976年,Intel雇佣伯克利大学教授William Kahan作为开发8087浮点芯片的顾问,后来IEEE采用了近似Kahan开发出的一套标准作为754标准。我们今天几乎所有的计算机采用的都是754标准。

 

开始动手:

    给定浮点数:10.12510

    二进制表示为:1010.001   (1*23+0*22+1*21+0*20+0*2-1+0*2-2+1*2-3 = 10.125)

 

 IEEE表示法可以用下面的公式:

    V = (-1)s * M * 2E

 其中:s:MSB,数据的最高位

          M:区间[0,1)的值

          E:2的指数值

图表表示为(针对float)



 

 1010.0012科学计数法为:1.010001右移了3位,所以E=3;

则e = E + bias = 3 + 127 = 130 = 0x82  (对于float类型 bias为127)

M = 1 + f,所以f = M -1 = 0.010001

那么1010.0012完整的标准浮点数表示为:


用IEEE表示法来验证下:

s = 0

E = 0x82 - 127 = 3

M = f + 1 = 1.0010001

V = (-1)0*(1*20+0*2-1+1*2-2+0*2-3+0*2-4+0*2-5+1*2-6)*23=10.125 
 

下面用程序来验证下:

#include <stdio.h>
#define BITSOFONEBYTE (8)
void show_bits(unsigned char v)
{
    int i = BITSOFONEBYTE -1;
    for(i; i >= 0; i--)
    {
        printf("%u", (v>>i)&0x01);
    }
    printf(" ");
}
void show_bytes(unsigned char* v, unsigned int len)
{
    int i = 0;
    for(i = len -1; i >= 0; i--)
    {
        printf("%.2X ", v[i]);
    }
    printf("\n");
    for(i = len -1; i >= 0; i--)
    {
        show_bits(v[i]);
    }
    printf("\n");
}


void main()
{
    float a = 10.125;
    show_bytes((unsigned char*)&a, sizeof(float));
}

 运行结果如下:

41 22 00 00 
01000001 00100010 00000000 00000000 

 

 

 

 

分享到:
评论

相关推荐

    S7-200SMART 双精度浮点型数据转换为单精度浮点型的方法.pdf

    S7-200SMART 双精度浮点型数据转换为单精度浮点型的方法

    浮点数据算法

    介绍浮点数据的表示、加减乘除的计算方法

    FloatBin 浮点转换工具

    该软件可以将单精度(single)浮点数或双精度(double)浮点数转换成二进制、十进制、十六进制字节内码表示,也可以将字节内码转换成浮点进行逆变换。不到1M的数据量,精简而不失实用性。全免费,无需注册,解压即...

    设计算术单元最重要的是什么?当然是理解浮点运算.rar

    它首先介绍有关浮点表示和舍入误差的背景知识,然后讨论IEEE 浮点标准,最后列举了许多示例来说明计算机生成器如何更好地支持浮点。类别和主题描述符:(主要) C.0 [ 计算机系统组织 ]:概论 — 指令集设计; D.3.4...

    浮点计算编程原理、实现与应用

     3.5.2 有符号通用整型的表示  3.5.3 符号操作  3.6 输入输出函数  3.6.1 输入函数  3.6.2 输出函数  3.7 代码使用  第4章 通用定点运算  4.1 基本概念  4.1.1 记数法  4.1.2 误差  4.1.3 舍...

    数据的表示和运算(数据结构)

    数据结构中对数据的表示和运算(浮点型和补码,反码表示等)

    C语言数据类型的资料,帮助初学者掌握C语言中的数据类型

    double:数据类型:用于表示一个双精度浮点型数据 else enum extern float:数据类型,用于表示一个单精度浮点型数据 *浮点型数据:带有小数点的数值,1.0,100.1,200.234 *单精度在精确度上低于双...

    论文研究-基于浮点型编码策略的差分多目标柔性车间调度优化.pdf

    为此, 提出一种基于浮点型编码策略的差分多目标优化算法。该算法采用基于工序权重的浮点数编码—解码机制, 消除了排列组合型编码方式对进化操作带来的约束, 运用差分进化策略生成新个体, 以提高优秀个体产生的几率, ...

    浮点型储存方式

    浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和指数e。 ±mantissa × 2exponent (注意,公式中的mantissa 和 exponent使用二进制表示)

    perl语言编写实现浮点格式数据加减乘除的程序_generallypx9_mantissa_Perl加减_Perl_

    若将数据表示为浮点数格式,即有exponent和mantissa两部分,用perl语言编写实现浮点格式数据加减乘除的程序。(测试时与编程语言提供的浮点数运算进行比较,包括代码文件和设计测试报告)

    《地理信息系统导论》第4章 栅格数据模型 复习题

    请分别举出整型栅格数据和浮点型栅格数据的例子4.解释像元大小、栅格数据分辨率和空间要素的栅格表示三者之间的关系6.解释被动和主动卫星系统之间的区别8.什么是数字高程模型9.介绍生成DEMs的三种常用方法14.请解释...

    Qt浮点型数据出现-nan结果 - 架构师米洛1

    引言在数据处理输入输出时,极有可能遇到数据读入空值(极大、极小)、运算中分母为0或0.0,对0取对数等操作…阅读博文来自: yinxingtianxTensor

    plc数据格式

    浮点数据的定义:所谓浮点数据是指用符号、尾数、指数来表示实数的数据,浮点数据的格式是以IEEE754标准为基准,单精度数据格式表示为32位。

    SIMD 浮点和整数压缩向量库

    压缩向量浮点和整数压缩向量库,支持 SIMD,用于对压缩表示进行快速处理/迭代。这是一个压缩的 vec库,而不是一个压缩库。这意味着什么?压缩库采用一些未压缩的数据并提供本质上的 compress() 和 decompress() 函数...

    Java程序设计基础:字符数据类型.pptx

    掌握字符数据类型的表示 掌握字符型数据的操作 基本数据类型 数值型 基本数据类型 布尔型 (boolean) 字符型 (char) 整数类型 (byte、short、int、long) 浮点类型 (float、double) 字符内部Unicode字符编码,占2个...

    利用PythonPandas进行数据预处理-数据清洗

    数据缺失在大部分数据分析应用中都很常见,Pandas使用浮点值NaN表示浮点和非浮点数组中的缺失数据,他只是一个便于被检测出来的数据而已。Python内置的None值也会被当作NA处理处理NA的方法有四种:dropna,fillna,is...

    Java程序设计基础:基本数据类型.pptx

    掌握直接量的表示 计算机的基本作用就是做运算。运算的数据可以由用户输入、从文件获得。 我们可以把数据进行归类,整数、小数、一串字符、单个字符。 数据类型 例如 课程名称:“高等数学”、“大学英语” 课程学分...

    西门子PLC数据格式转换控件

    西门子PLC数据格式转换控件,有源代码,VB控件,算法包括二进制,16进制,8进制,10进制之间的数据相互转换,还有西门子PLC浮点数和浮点数32位二进制表示法之间的相互转换等,算法丰富,可用于单片机和PC通讯等等。

    8位16进制转浮点数 转FP

    数值为42480000(IEEE 浮点'数)。IEEE 浮点数的格式如下:位31 = 符号,位23 至位30 = 阶,位0 至位22 = 尾数,用十进制数表示时是:数值=((-1)的'符号'次幂)x(2 的(阶-127)次幂)x1.(尾数)。

Global site tag (gtag.js) - Google Analytics