1. 这篇博客将要讨论什么?
说来惭愧,做为计算机科班出身的人,计算机基础知识掌握并不扎实,这里的基础指的是计算机体系结构中的内容,诸如数据的表示和处理,如float的表示和运算等。看《CSAPP》方知人家老外把这个东西当成重中之重,大量详细的原理介绍,并配套大量例题。当初本科学的时候,很简单的了解了下概念而已,因此应该直接将《CSAPP》当作教材来用,里面习题全作,这样CS出来的基本知识将掌握的很扎实。html
学艺不精的后果就在于:学而不思则罔。圣人太厉害了,总结得很到位。好比最近项目中涉及到浮点和定点的转换,本身就有点蒙,边看边实验,还算理解了,做文以记之。web
一直以来,程序中接触的数据类型都是int整型,char字符型,float单精度浮点型,double双精度浮点型。看到浮点和定点一直不知道如何划分这个概念的范畴。觉得浮点就是float表示小数,定点就是int可表示整数而已。通过学习明白了显然是错误的。应该是这样划分的:网络
浮点:小数点非固定的数,可表示数据范围较广,整数,小数均可表示。包含float,double;
定点:小数点固定,可表示整数,小数。int本质是小数点位于末尾的32位定点数而已;
有了这个认识,后面的讨论就能够开始了。app
2. 浮点数的表示法
浮点数以float为例讨论。svg
2.1 IEEE 754标准
规定浮点数格式为:V
=
(
−
1
)
s
×
M
×
2
E
V = (-1)^s×M×2^EV=(−1)s×M×2E学习
s表示符号位,当s=0,V为正数;当s=1,V为负数
M表示尾数,2
>
M
>
=
1
2>M>=12&