浮点数学习笔记

一个机器浮点数由阶码和尾数及其符号位组成:
尾数:用定点小数表示,给出有效数字的位数,
决定了浮点数的表示精度;
阶码:用定点整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。

这里写图片描述

(2) 浮点数的标准格式 (N=Re.m)
为便于软件移植,使用 IEEE(电气和电子工程师协会)标准
IEEE754 标准:尾数用原码;阶码用移码;基为2

•  按照 IEEE754 的标准,32位浮点数和64位浮点数的标准格式为 :

这里写图片描述

S—尾数符号,0正1负
M—-尾数,纯小数表示,小数点放在尾数域的最前面。
采用原码表示。
E—阶码,采用“移码” 表示;
阶符采用隐含方式,即采用“移码”方法来表示正负指数。

规格化目的:
为了提高数据的表示精度
为了数据表示的唯一性
尾数为R进制的规格化:这里写图片描述
绝对值大于或等于1/R
二进制原码的规格化数的表现形式:

正数 0.1xxxxxx
负数 1.1xxxxxx
补码尾数的规格化的表现形式:
尾数的最高位与符号位相反
正数 0.1xxxxxx
负数 1.0xxxxxx
在计算机内,其纯小数部分被称为浮点数的尾数,对非 0 值的浮点数,要求尾数的绝对值必须 >= 1/2,即尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化表示:
0.1000101010
把不满足这一表示要求的尾数,变成满足这一要求的尾数的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改阶码实现。
规格化处理:
在计算机内,其纯小数部分被称为浮点数的尾数,对非 0 值的浮点数,要求尾数的绝对值必须 >= 1/2,即尾数域的最高有效位应为1,称满足这种表示要求的浮点数为规格化表示:
0.1000101010
把不满足这一表示要求的尾数,变成满足这一要求的尾数的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改阶码实现。
隐藏位技术:
既然非 0 值浮点数的尾数数值最高位必定为 1,则在保存浮点数到内存前,通过尾数左移, 强行把该位去掉, 用同样多的尾数位就能多存一位二进制数,有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。
0.1100010  1.100010
当然,在取回这样的浮点数到运算器执行运算时,必须先恢复该隐藏位。

移码定义:
这里写图片描述
[x]移 = x0 x1 x2 ··· xn
= 2n + x
一个规格化的32位浮点数x的真值为:
这里写图片描述

一个规格化的64位浮点数x的真值为:
x = ( –1)s×(1.M)×2E-1023
这里e是真值,E是机器数

例:若浮点数 x 的二进制存储格式为(41360000)16,求
其32位浮点数的十进制值。
解: 0100,0001,0011,0110,0000,0000,0000,0000
数符:0
阶码:1000,0010
尾数:011,0110,0000,0000,0000,0000
指数e=阶码-127=10000010-01111111 =00000011=(3)10  包括隐藏位1的尾数:
1.M=1.011 0110 0000 0000 0000 0000=1.011011

于是有 x=(-1)s×1.M×2e

         =+(1.011011)×23=+1011.011=(11.375)10

例: 将十进制数20.59375转换成32位浮点数的二进制格式来存储

解:首先分别将整数和分数部分转换成二进制数:
20.59375=10100.10011
  然后移动小数点,使其在第1,2位之间
   10100.10011=1.010010011×24     e=4
  于是得到: e =E – 127
S=0,E=4+127=131=1000,0011,M=010010011
  最后得到32位浮点数的二进制存储格式为
0100 0001 1010 0100 1100 0000 0000 0000= (41A4C000)16
例:将十进制数-0.75表示成单精度的IEEE 754标准代码
解:-0.75 = -3/4 = -0.112 = -1.1×2-1

=(-1)1×(1 + 0.1000 0000 0000 0000 0000 000)×2-1

=(-1)1×(1 + 0.1000 0000 0000 0000 0000 000)×2126-127

s=1,E= 12610 = 011111102, F = 1000 … 000。

1 011,1111,0 100,0000,0000,0000,0000,0000
    B     F    4    0    0    0    0    0 H
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值