看到有网上有个项目是要求将浮点数用二进制表示出来,需要用IEEE754标准,查了查维基和深入理解计算机系统,重新学习了一遍浮点数在计算机中的表示和内存中的存储,

先简单的做个笔记,后面需要更深入的理解。

IEEE754定义了四种表示浮点数的方式:单精度(32bit),双精度(64bit),延伸单精度(43bit以上),延伸双精度(79bit以上),后两者很少使用,这里讲的是前面两种。

用二进制来表示浮点数分三个部分,以下都已32bit的单精度为例,双精度类似可以推算出来:

三部分为:符号位(sign)、指数(exponent)、尾数(significand,存储二进制小数部分),下面是维基上的图:

单精度浮点数中,sign为1bit,exponent为8bit,significand为23bit,三部分组成32bit。

还有一个概念比较重要“指数偏移值”,在IEEE754中指浮点数表示中的指数域(exponent)的编码值为指数的实际值加上一个固定值,这个固定值的算法是2e-1 - 1

在单精度浮点数中为128-1 = 127.

小数部分定义是f=0.fn-1fn-2...f0,二进制小数点在最高有效位的左边,而有小数定义为M=1 + f,所以M表示成1.fn-1...f0,通过调整指数,使有效数M在1~2之间

看一个例子8.25,

转换成二进制表示1000.01 可以表示成 1.00001 *23

所以指数E = 3 + 127 = 130

所以8.25在内存中表示是:

0 10000010 00001000000000000000000

其中对于小数部分如何转换成二进制,可以按一下方式小数部分*2,取整数部分值(0或者1)

,然后继续取结果的小数部分*2,在取整数部分,一直循环,直到取得想要的位数,

如0.25 *2 = 0.5, 整数部分为0,然后0.5*2=1.0,整数部分为1,所以二进制表示为0.0100000..00

指数的取值范围是从-126~127,所以当一个浮点数如0.25,时可以表示成1.000*2-2

所以指数偏移值为-2 + 127=125

在内存中表示是

0 01111101 00000000000000000000000

以上都是浮点表示中规格化值的用法,其他还有非规格化和特殊值两种,以后再补充。

IEEE二进制浮点数算术标准学习的更多相关文章

  1. IEEE二进制浮点数算术标准(IEEE 754)

    整理自IEEE 754 IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0) ...

  2. IEEE 754二进制浮点数算术标准

    可能很多人都遇到过浮点数精度丢失的问题,下面以JavaScript为例. 1 - 0.9 = 0.09999999999999998 纳尼,不应该是0.1么,怎么变成0.099999999999999 ...

  3. IEEE754二进制浮点数算术标准

    对于32位浮点数 sign: 符号,1位 exponent: 指数,8位,偏码 fraction: 分数,23位,原码 特殊值   指数域的编码值 = 指数的实际值 + 127 这样按照字典序的顺序就 ...

  4. IEEE 二进制浮点数的表示

    朋友在谈一个物流相关的项目,是以前项目的一个延续,涉及到后台的扩展,手机端的App,外加两个App的对接的蓝牙打印机.这个项目前后说了一个多月了吧,最近才草拟了协议.项目本来不复杂,但是客户却如此的拖 ...

  5. IEEE 754浮点数表示标准

    二进制数的科学计数法 C++中使用的浮点数包括采用的是IEEE标准下的浮点数表示方法.我们知道在数学中可以将任何十进制的数写成以10为底的科学计数法的形式,如下 其中显而易见,因为如果a比10大或者比 ...

  6. IEEE 754 浮点数在计算机中的表示方法

    IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denorma ...

  7. 深入理解计算机系统(2.7)---二进制浮点数,IEEE标准(重要)

    2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之 ...

  8. 蓝牙(Bluetooth) IEEE 802.15.1 协议学习

    catalogue . 蓝牙概念 . 配对和连接 . 机密安全性 . 蓝牙协议分类 . 蓝牙协议栈 1. 蓝牙概念 蓝牙(Bluetooth)是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网 ...

  9. DICOM:DICOM标准学习路线图(初稿)

    题记: DICOM医学图像处理专栏撰写已有两个年头,积累了近百篇文章.起初只是用于记录自己科研.工作中遇到的疑难问题,专注于图像处理(主要是医学图像,这也正是专栏名称最初的由来):后来逐渐延伸到了DI ...

随机推荐

  1. 解析json

    String json = "{\"elements\":[{\"distance\":{\"text\":\"1364 ...

  2. 代理模式(Proxy pattern)

    代理模式(proxy pattern):作用:为其他对象提供一种代理,以控制对这个对象的访问.代理对象在客户端对象和目标对象之间起中介的作用. 代理模式涉及到的角色: 抽象角色:声明真实对象和代理对象 ...

  3. python读取excel数据,并可视化展现

    #-*- coding: utf-8 -*- import pandas as pda import matplotlib.pyplot as pyl import matplotlib.font_m ...

  4. Generate transparent shape on image

    Here is an example code to generate transparent shape on image. Need to pay attention can not use cv ...

  5. redis集群讨论

    一.生产应用场景 二.存储架构演变 三.应用最佳实践 四.运维经验总结 第1.2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变.第3节:redis cluster的稳定性 ...

  6. 账号控管:NIS服务器

    NIS服务器   sun最开始命名为 Yellow pages ,黄页, NIS = YP;   14.1 NIS的由来与功能   NIS--Network information services( ...

  7. maven安装配置

    1.到官网下载maven http://maven.apache.org/download.html 2.解压后解压到任意文件路径 本地解压的位置:C:\soft\apache-maven-3.3.9 ...

  8. ipython的安装

    ipython:是python的一个交互式shell环境,可以安装到windows和linux上面.作用:用来执行python代码和调试用.windows上面安装:分为2.x版本和3.x版本,分为py ...

  9. web初学之request,session与application

    request (1)request的setAttribute()与getAttribute()方法一般都是成对出现,首先通过setAttribute()方法设置属性与属性值,然后通过getAttri ...

  10. 读Javascript高级程序设计第三版第六章面向对象设计--创建对象

    虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式  1 function CreatePerson(name,a ...