先说说历史:
众所周知,浮点数是用来表示远远大于或者小于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 双精度浮点型数据转换为单精度浮点型的方法
介绍浮点数据的表示、加减乘除的计算方法
该软件可以将单精度(single)浮点数或双精度(double)浮点数转换成二进制、十进制、十六进制字节内码表示,也可以将字节内码转换成浮点进行逆变换。不到1M的数据量,精简而不失实用性。全免费,无需注册,解压即...
它首先介绍有关浮点表示和舍入误差的背景知识,然后讨论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 舍...
数据结构中对数据的表示和运算(浮点型和补码,反码表示等)
double:数据类型:用于表示一个双精度浮点型数据 else enum extern float:数据类型,用于表示一个单精度浮点型数据 *浮点型数据:带有小数点的数值,1.0,100.1,200.234 *单精度在精确度上低于双...
为此, 提出一种基于浮点型编码策略的差分多目标优化算法。该算法采用基于工序权重的浮点数编码—解码机制, 消除了排列组合型编码方式对进化操作带来的约束, 运用差分进化策略生成新个体, 以提高优秀个体产生的几率, ...
浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和指数e。 ±mantissa × 2exponent (注意,公式中的mantissa 和 exponent使用二进制表示)
若将数据表示为浮点数格式,即有exponent和mantissa两部分,用perl语言编写实现浮点格式数据加减乘除的程序。(测试时与编程语言提供的浮点数运算进行比较,包括代码文件和设计测试报告)
请分别举出整型栅格数据和浮点型栅格数据的例子4.解释像元大小、栅格数据分辨率和空间要素的栅格表示三者之间的关系6.解释被动和主动卫星系统之间的区别8.什么是数字高程模型9.介绍生成DEMs的三种常用方法14.请解释...
引言在数据处理输入输出时,极有可能遇到数据读入空值(极大、极小)、运算中分母为0或0.0,对0取对数等操作…阅读博文来自: yinxingtianxTensor
浮点数据的定义:所谓浮点数据是指用符号、尾数、指数来表示实数的数据,浮点数据的格式是以IEEE754标准为基准,单精度数据格式表示为32位。
压缩向量浮点和整数压缩向量库,支持 SIMD,用于对压缩表示进行快速处理/迭代。这是一个压缩的 vec库,而不是一个压缩库。这意味着什么?压缩库采用一些未压缩的数据并提供本质上的 compress() 和 decompress() 函数...
掌握字符数据类型的表示 掌握字符型数据的操作 基本数据类型 数值型 基本数据类型 布尔型 (boolean) 字符型 (char) 整数类型 (byte、short、int、long) 浮点类型 (float、double) 字符内部Unicode字符编码,占2个...
数据缺失在大部分数据分析应用中都很常见,Pandas使用浮点值NaN表示浮点和非浮点数组中的缺失数据,他只是一个便于被检测出来的数据而已。Python内置的None值也会被当作NA处理处理NA的方法有四种:dropna,fillna,is...
掌握直接量的表示 计算机的基本作用就是做运算。运算的数据可以由用户输入、从文件获得。 我们可以把数据进行归类,整数、小数、一串字符、单个字符。 数据类型 例如 课程名称:“高等数学”、“大学英语” 课程学分...
西门子PLC数据格式转换控件,有源代码,VB控件,算法包括二进制,16进制,8进制,10进制之间的数据相互转换,还有西门子PLC浮点数和浮点数32位二进制表示法之间的相互转换等,算法丰富,可用于单片机和PC通讯等等。
数值为42480000(IEEE 浮点'数)。IEEE 浮点数的格式如下:位31 = 符号,位23 至位30 = 阶,位0 至位22 = 尾数,用十进制数表示时是:数值=((-1)的'符号'次幂)x(2 的(阶-127)次幂)x1.(尾数)。