IEEE浮点数标准
IEEE浮点数标准
阅读笔记:Computer System : A Programmmer's Perspective
基本概念
IEEE浮点数标准采用
\]
的形式表示一个数:
符号:s决定数的正负
尾数:M是一个二进制小数,范围是1~2-epsilon 或者 0~1-epsilon
阶码:E的作用是对浮点数加权,权重为2的E次幂
下图为单精度(32位)与双精度(64位)的位示意图:
单精度:
- s:1位
- exp:k=8位
- frac:n=23位

双精度:
- s:1位
- exp:k=11位
- frac:n=52位

三个字段的编码:
单独的s直接编码符号s
k位的阶码字段:
\[exp=e_{k-1}e_{k-2}\cdots e_{1}e_{0}
\]
编码E
- n位的小数字段:
\[frac=f_{n-1}f_{n-1}\cdots f_{1}f_{0}
\]
编码M
编码的三种情况
规范化值

当exp的位即不全为0也不全为1时(即单精度范围:1~254 双精度范围:1~2046),即为规范化的值。这种情况下,阶码字段可以被解释为以偏置量(bias)形式表示的有符号整数
\]
其中:exp即为阶码字段表示的值,并有
\]
故对于单精度bias=127,双精度bias=1023,由此可得:
\]
或者是:
\]
因此指数的范围:
\]
或者是:
\]
小数字段被解释为描述小数值f,0≤f<1,即:
\]
尾数定义为:
\]
非规范化值

当阶码域全为0时,表示的数是非规范化的,此时的阶码为
\]
故E=-126(单精度)或者E=-1022(双精度)而尾数:
\]
同理0≤f<1,即:
\]
用途:
- 表示数值0
- 表示非常接近0的数
特殊值
- 无穷大

阶码全为1且小数字段全为0,根据符号位表示±∞
- NaN

阶码全为1且小数字段不全为0,这不是一个数(Not a Number)
总结
值的表示:
\]
单精度:
规范值:
E=exp-bias
bias=127
M=1+f
非规范:
E=1-bias=-126
bias=127
M=f
双精度:
规范值:
E=exp-bias
bias=1023
M=1+f
非规范值
E=1-bias=-1022
bias=1023
M=f
示例
Q1.将-3.33333333转换为单精度表示
首先,将这个小数转化为二进制的小数形式(利用×2法)
\]
规范化:
\]
因此:
\]
\]
\]
从而可以写出单精度表示
\]
Q2.给出如图8位二进制数在IEEE标准的浮点格式

首先对于规范化值:
\]
对于非规范值:
\]
可以写出如下表格:

IEEE浮点数标准的更多相关文章
- 浮点数在计算机中的表示(IEEE浮点数标准)
转载自:https://wdxtub.com/2016/04/16/thin-csapp-1/
- 基于 IEEE 754 标准的 单精度浮点数计算方式 (未完成)
def dec2bin(dec): if dec < 0: s = ' dec = dec * (-1) else: s = ' e = 127 dec = float(dec) r = int ...
- 打印一个浮点数组,会输出字符串"Hello, world“ & 浮点数的二进制表示(IEEE 754标准)
#include <stdio.h> #include<stdlib.h> int main() { float a[3] = { 1143139122437582505939 ...
- 【算法】解析IEEE 754 标准
目录结构: contents structure [-] 浮点数的存储过程 次正规数(Denormalized Number) 零(zero) 非数值(NaN) 无穷大(infinity) 除数为0. ...
- python 警惕 IEEE 754标准
双精度浮点数格式,即IEEE 754标准 >>> 0.1+0.2 0.30000000000000004 >>> (0.1+0.2)==0.3 False > ...
- IEEE 754标准--维基百科
IEEE二进制浮点数算术标准(IEEE 754) 是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denorm ...
- 计算机中如何表示数字-07IEEE754浮点数标准
由于不同机器所选用的基数.尾数位长度和阶码位长度不同,因此对浮点数的表示有较大差别,这不利于软件在不同计算机之间的移植.为此,美国IEEE(电器及电子工程师协会)提出了一个从系统角度支持浮点数的表示方 ...
- IEEE浮点数float、double的存储结构
众所周知,C的float.VB的Single都是32位浮点数变量类型(也叫单精度浮点数),C的double和VB的Double则都是64位的浮点数变量类型(也叫双精度浮点数).有些编译器还支持更屌的l ...
- IEEE 754标准
IEEE 754-1985 was an industry standard for representing floating-point numbers in computers, officia ...
随机推荐
- 关于spring @scope("prorotype") 和 @aspectj 一起用的问题
前段时间听别人说prototype 模式的bean用@Aspectj做AOP会导致内存泄漏, 于是自己研究了下总结出几点 1.aspectj 如果是采用javac 编译 会动态产生代理类 代理类是 ...
- 云计算之路-出海记:蹭一张 aws 船票
出海记开篇之后,在 aws 上搭建博客园海外站的出海计划今天开始迈出第一步 -- 注册一个 aws 海外区域账号. aws 现在针对新注册用户提供12个月免费套餐(正在园子里推广并提供了专属注册通道) ...
- mns: Money Never Sleeps! 自己开发的一款 IDEA 插件介绍.
一边敲代码, 一边关注股票/基金行情, 还不怕同事盯到自己的屏幕! 对于一个关注股市跟基金的研发人员来说, 莫过于一天到晚写代码, 而不能及时的查看股市行情跟基金走势了吧. 写代码的时候比较容易忘记看 ...
- 模板——Splay
$Splay$ #include <bits/stdc++.h> #define inf (int)1e9 using namespace std; const int N=1e5+100 ...
- c#写入文件流
using (FileStream wir=new FileStream(@"C:\Documents and Settings\Administrator\桌面\1.txt",F ...
- 配置交换机基于接口划分VLAN(接入层设备作为网关)
组网图形 简介 划分VLAN的方式有:基于接口.基于MAC地址.基于IP子网.基于协议.基于策略(MAC地址.IP地址.接口).其中基于接口划分VLAN,是最简单,最常见的划分方式. 基于接口划分VL ...
- 为什么重写 equals() 方法,一定要重写 hashCode() 呢?| HashMap
微信搜索「码农田小齐」,关注这个在纽约的程序媛,回复「01-05」可以获取计算机精选书籍.个人刷题笔记.大厂面经.面试资料等资源,么么哒- 首先我们有一个假设:任何两个 object 的 hashCo ...
- C++ 基础 5:多态
1 什么是多态 多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态. C++ 多态意味着由继承而产生的相关的不同的类,调用重写函数时,会根据实际的对象类型来执 ...
- wpf 全局异常捕捉+错误日志记录+自动创建桌面图标
/// /// 创建桌面图标 /// public static void CreateShortcutOnDesktop(string LnkName) { String shortcutPath ...
- 在windows下安装node-sass失败,提示\node-sass: Command failed,解决方案
执行命令 yarn add node-sass@4.7.2 --dev --registry=https://registry.npm.taobao.org :报错 出现这个问题的原因一般是网络问题, ...