`

数据表示(浮点)

 
阅读更多

先说说历史:

    众所周知,浮点数是用来表示远远大于或者小于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 

 

 

 

 

分享到:
评论

相关推荐

    16进制数据与浮点型数据转换——c语言程序

    1. **16进制数据表示**: 16进制(Hexadecimal)是一种逢16进1的数制,它使用0到9的阿拉伯数字和A到F的字母(代表10到15)来表示数值。在计算机科学中,16进制常用于表示内存地址、颜色代码或二进制数据的简洁形式...

    学习C语言的数据类型浮点型数据.pdf

    在C语言中,浮点型数据是一个非常重要的数据类型,它可以表示实数值。浮点型数据在内存中的存储方式不同于整型数据,它按照指数形式存储,分为小数部分和指数部分。 一、浮点型常量的表示方法 浮点型常量可以用两...

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

    在处理数据时,经常会遇到需要将双精度浮点型数据(Real)转换为单精度浮点型数据(Float)的情况。双精度和单精度浮点数在计算机中以二进制形式表示,双精度占用64位(8字节),而单精度占用32位(4字节)。在S7-...

    WHUT(HUST)数据表示实验1-4关.zip

    《WHUT(HUST)数据表示实验1-4关——深入理解计算机数据表示》 在计算机科学领域,数据表示是计算机组成与体系结构的基础之一,它关乎到计算机如何存储和处理信息。WHUT(武汉理工大学)计算机组成与体系结构课程中...

    数的定点表示和浮点表示.doc

    在计算机处理中,数值数据的表示方式有两种:定点表示法和浮点表示法。 一、定点表示法 定点表示法(Fixed-Point Representation)是一种将小数点固定在某个位置的表示方法。这种方法将小数点的位置固定在最高位或...

    浮点型数据与IEEE754标准互转

    浮点型数据与IEEE754标准互转是计算机科学中的一个重要话题,特别是在数值计算、图形处理和数据存储等领域。IEEE754是国际电工委员会(IEEE)制定的一套浮点数运算标准,用于规范浮点数在计算机硬件中的表示方式。这...

    S7-200SMART中如何把1个INT整型数据转换成REAL浮点型数据?.docx

    而REAL数据类型占用四个字节(32位),可以表示更大的数值范围以及包含小数部分。 在S7-200SMART中,将INT转换为REAL的过程通常涉及两个步骤: 1. **整数到双精度整数的转换**: 使用`I-DI`(Integer to Double-...

    华中科技大学——logisim 3.数据表示实验.zip

    数据表示涉及二进制、八进制、十进制和十六进制之间的转换,以及不同数据类型如整型、浮点型和字符型的表示。在"data实验"中,学生可能需要理解和应用这些基础知识,通过编程或硬件模拟来体验数据的表示与操作。例如...

    计算机系统结构:第2章 数据表示与向量系统II.pdf

    1. 浮点数据表示:IEEE754标准,浮点数的表示和运算。 2. 高级数据表示:自定义数据表示、带标志符的数据表示、数据描述符、向量数组数据表示、堆栈数据表示等。 3. 寻址方式和指令格式的优化设计:如何选择合适的...

    float2hex 浮点二进制整型数据计算工具

    浮点二进制整型数据计算工具,如`float2hex`,是计算机科学中用于处理和转换浮点数到十六进制表示的关键工具。在编程和数据分析领域,理解和掌握这种转换过程至关重要,因为计算机内部是以二进制形式存储所有数据的...

    C语言的数据类型→浮点型数据[收集].pdf

    本文主要关注的是浮点型数据,也就是处理实数或小数的类型。浮点型数据在计算机科学中扮演着重要的角色,因为它们能够处理非整数的数学计算。 一、浮点型常量的表示方法 浮点型常量在C语言中有两种基本表示形式: ...

    C# 串口通讯截取4位字节数据16进制转浮点型输出

    在描述中提到的程序,其主要目标是读取电流表返回的4位字节数据,并将这些16进制数值转换为浮点类型,以便在用户界面上实时显示。 首先,我们需要创建一个`SerialPort`对象来处理串口通讯。在C#中,`System.IO....

    java 整型 浮点型 字符型 布尔型

    long 类型用于表示更大的整数,所表示的数据范围为 -9223372036854775808 到 9223372036854775807。 §2.4 浮点型数据 浮点型数据是 Java 中的另一种基本数据类型。浮点型常量有两种表示形式:十进制数形式和科学...

    浮点数据算法

    浮点数据算法主要涉及浮点数的表示方法和计算过程,是计算机科学中处理实数的一种方式。浮点数在计算机内部通常分为三部分:符号位(s)、阶码(E)和尾数(M)。浮点运算器是实现这些计算的核心硬件,它包括处理阶...

    浮点转定点原理及Matlab例码

    浮点转换为定点的原理是数字信号处理与数字系统设计中的一个重要课题,特别是在硬件实现如FPGA或ASIC中,由于成本与面积的考虑,定点数的使用变得非常普遍。浮点数与定点数在表达数值时各有特点和应用场景,理解它们...

    头歌计算机数据表示实验

    在“头歌计算机数据表示实验”中,我们主要探讨的是计算机内部如何表示和处理数据,这是一个基础且至关重要的计算机科学概念。Logisim是一个流行的电路模拟软件,它被广泛用于教育领域,帮助学生理解二进制逻辑和...

    DSP IQMath 库 虚拟浮点引擎.zip

    该库利用了特定的算法和数据表示,使得在硬件不支持浮点运算的定点处理器上也能实现高性能的浮点计算。 **2. 虚拟浮点引擎** 虚拟浮点引擎是IQMath库的核心部分,它通过一系列精心设计的算法和数据结构来模拟浮点...

    stm32硬件浮点使用方法

    STM32 中的浮点运算是指对浮点数进行运算的能力,浮点数是一种数据类型,它可以表示很大的数值范围。浮点运算在 STM32 中是通过硬件浮点单元(FPU)来实现的。 在 STM32F4 中,FPU 是一个可选的功能,需要在系统...

    底层硬件如何实现浮点运算_浮点fpga_浮点运算_fpga_FPGA浮点运算_硬件_

    6. **流水线设计**:为了提高浮点运算的吞吐量,FPGA设计中常采用流水线技术,将运算过程分为多个阶段,使得每个阶段可以同时处理不同的数据,从而提高整体运算速度。 7. **FPGA的优势**:FPGA相比CPU或GPU,具有更...

Global site tag (gtag.js) - Google Analytics