浮点数和定点数的相互转换(浮点数量化为定点)

1. 这篇博客将要讨论什么?

说来惭愧,作为计算机科班出身的人,计算机基础知识掌握并不扎实,这里的基础指的是计算机体系结构中的内容,诸如数据的表示和处理,如float的表示和运算等。看《CSAPP》方知人家老外把这个东西当成重中之重,大量详细的原理介绍,并配套大量例题。当初本科学的时候,很简单的了解了下概念而已,所以应该直接将《CSAPP》当做教材来用,里面习题全做,这样CS出来的基本知识将掌握的很扎实。

学艺不精的后果就在于:学而不思则罔。圣人太厉害了,总结得很到位。比如最近项目中涉及到浮点和定点的转换,自己就有点蒙,边看边实验,还算理解了,作文以记之。

一直以来,程序中接触的数据类型都是int整型,char字符型,float单精度浮点型,double双精度浮点型。看到浮点和定点一直不知道如何划分这个概念的范畴。以为浮点就是float表示小数,定点就是int可表示整数而已。经过学习明白了显然是错误的。应该是这样划分的:

  • 浮点:小数点非固定的数,可表示数据范围较广,整数,小数都可表示。包含float,double;
  • 定点:小数点固定,可表示整数,小数。int本质是小数点位于末尾的32位定点数而已;

有了这个认识,后面的讨论就可以开始了。

2. 浮点数的表示法

浮点数以float为例讨论。

2.1 IEEE 754标准

规定浮点数格式为: V = ( − 1 ) s × M × 2 E V = (-1)^s×M×2^E V=(1)s×M×2E

  • s表示符号位,当s=0,V为正数;当s=1,V为负数
  • M表示尾数, 2 > M > = 1 2>M>=1 2>M>=1
  • E表示阶码

将其封装到32位的字中:

符号位 阶码 尾数
1 8 23

根据32位数计算为十进制: V = ( − 1 ) s × ( 1. M ) × 2 ( E − 127 )

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值