408中浮点数的表示和运算【硬核总结】

浮点数和定点数的区别

通俗的讲,定点数就是我们所说的普通的小数【定点小数】、整数【定点整数】
浮点数其实就是对一个非常大的数据用科学计数法表示

浮点数的表示

在这里插入图片描述

浮点数的规格化

规格化的目的是为了充分利用尾数的有效数位,所以通过规格化使得尾数的最高数位必须是一个有效值。
在这里插入图片描述
在这里插入图片描述结论
结论:负数补码规格化最大负数形式为1.0111…111,原码为1.1000…001,最小负数自然是1.0000000…00(-1)
故范围为:-1 ~ -(1/2+2-n)

超级重点理解

问题1:为什么负数补码的最高数值位为0?


规格化的目的是为了充分利用尾数的有效数位,所以通过规格化使得尾数的最高数位必须是一个有效值。
我是这样理解的,对于原码表示的负数来说,有效值为 1,而补码是原码各位取反加一得到的,所以 0 才是补码表示的负数的有效值,这样就与规格化的要求吻合。

问题2:当取-0.1000时,原码1.1000,补码1.1000,这时刚好为-1/2,符合尾数规格化的范围,为什么不从这里开始取值呢?


为了机器判断方便,往往不把-1/2列入规格化的数,因此,机器只要判断运算结果的尾数最高位(数符)与尾数次高位(第一有效位)是否相同,便可以判断是否是规格化的数。

问题3:什么是正上溢,负上溢?什么是正下溢,负下溢?
在这里插入图片描述

在这里插入图片描述

补充
在这里插入图片描述
注意:规格化后,最小的正数是0.100000,因为规格化数尾数中小数点后第一位必须为1
在这里插入图片描述
在这里插入图片描述
有个疑问?就是浮点机中,补码表示的时候,尾数为什么小数点后第一位不是1在这里插入图片描述
在这里插入图片描述

IEEE 754 标准

IEEE 754 标准的目的:统一规定确定号阶码占多少位,尾数占多少位,阶码和尾数各自用什么码表示
方便计算机之间进行数据传输,解决计算机对数据解析困难的问题

  1. IEEE标准下,尾数中小数点前面的1可以隐含的保留,所以在规格化尾数的时候,要保证小数点前面的数字为1
  2. 左规-》小数点不动,数左移-》相当于小数点右移-》变大了,所以阶码减1
  3. 左规是不会发生溢出的,
  4. 右规的时候,阶码会不断的增大,所以有可能超出阶码所能表示的最大的范围,发生了上溢
  5. 754标准下,阶码用移码表示,尾数用原码表示

移码通常用于浮点数的阶码当中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

全1:-128
全0:-127
数符:表示整个数值的正负性
阶码:全0表示非规格化,全1表示无穷大
所以阶码的值可以从1-254(8位表示),转为真值-126到127
在这里插入图片描述

举例:

在这里插入图片描述

负数:所以数符位是1

在这里插入图片描述在这里插入图片描述

float型浮点数中,阶码的位数为8,正常移码可以表示的数据范围是0–255(看做无符号数),
根据:移码=真值+偏置值,偏置值=127
真值=移码–偏置值
但是阶码全0和全1有特殊的用途,全1对应真值【-128】,全0对应真值【-127】
所以阶码真值最小是-126,最大是127

在这里插入图片描述

在这里插入图片描述

注意阶码E全为0,尾数M不全为0时,在计算真值的时候,阶码虽然全为0,但是计算时,把阶码的真值视为-126,同时,尾数部分,隐含的数字为0,不再是1

在这里插入图片描述

浮点数的运算

基本步骤

在这里插入图片描述

  1. 对阶的时候,小阶向大阶看齐

舍入

在这里插入图片描述

强制类型转换

在这里插入图片描述

在这里插入图片描述

注意
int型、long型:1个符号位+31个数值位
float型:1个数符位+8个阶码位+23个尾数位(还有隐藏的1位,实际可以表示24位尾数)

int --> float会丢失精度,因为int有31位数值,而float只能表示23位数值
而float --> int 既可能丢失精度,又可能溢出。
溢出是因为float有阶码,他表示的最大数值达到2127以上,而int型只能表示到231-1
损失精度是因为,如果float表示的数是0.0000101,把他转为in型的话,就只剩下0了,精度大大损失

在这里插入图片描述在这里插入图片描述

小结

在这里插入图片描述

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sparky*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值