CSAPP:信息的表和处理2

时间:2023-03-10 00:19:23
CSAPP:信息的表和处理2

CSAPP:信息的表和处理2

关键点:浮点数、浮点数运算。

二进制小数IEEE浮点数表示浮点数转换(单精度)参考

二进制小数

  形如CSAPP:信息的表和处理2表示的二进制数,其中每个位CSAPP:信息的表和处理2的取值范围位0和1。这种表示方式的定义如下:
CSAPP:信息的表和处理2
  符号.变为二进制点,点的左边的位的权是2的正幂,右边的位的权是2的负幂。例如CSAPP:信息的表和处理2
  小数的二进制表示法只能表示那些能够被写成CSAPP:信息的表和处理2的数,其他的数值只能近似的表示,增加二进制的长度可以提高表示的精度。

IEEE浮点数表示

  IEEE浮点标准用CSAPP:信息的表和处理2的形式来表示一个数:

  • 符号(sign)s,决定正负,1表示负数,0表示正数
  • 尾数M是一个二进制小数,他的范围是1~2-ε,或者0~1-ε
  • 阶码(exponent)E的作用是对浮点数加权,这个权重是2的E次幂(E可能为负)
    将浮点数的位表示划分为三个字段,分别对这些值进行编码:
  • 一个单独的符号位s,直接编码符号位s
  • k位的阶码字段CSAPP:信息的表和处理2编码阶码E
  • n位小数字段CSAPP:信息的表和处理2编码尾数M,但是编码出来的值也依赖于阶码字段的值是否等于0。

CSAPP:信息的表和处理2              标准浮点数格式:32位和64位
  在单精度(C语言float)中s,exp,frac的字段分别为1位,k=8位,n=23位,得到一个32位的表示。在双精度(C语言double)中,s,exp,frac的字段分别为1位,k=11位,n=52位,得到一个64位的表示。
  根据exp的值,被编码的值可以分成三种不通的情况,规格化、非规格化、特殊值(有两个变种)
CSAPP:信息的表和处理2                         单精度浮点值的分类

  • 规格化
    CSAPP:信息的表和处理2&&CSAPP:信息的表和处理2CSAPP:信息的表和处理2,e为无符号数,其位表示为CSAPP:信息的表和处理2
    其中CSAPP:信息的表和处理2(单精度127,双精度1023)
    小数字段frac被解释描述为小数值f,其中CSAPP:信息的表和处理2,其二进制表示为CSAPP:信息的表和处理2,尾数CSAPP:信息的表和处理2,有时这种方式也叫做隐含以1开头的表示,因此可以把M看成一个二进制表达式CSAPP:信息的表和处理2
  • 非规格化
    CSAPP:信息的表和处理2,阶码值CSAPP:信息的表和处理2,尾数的值CSAPP:信息的表和处理2,也就是小数字段的值,不包含隐含开头1
  • 特殊值
    CSAPP:信息的表和处理2时。当小数域全为0,得到的值为无穷,CSAPP:信息的表和处理2,为CSAPP:信息的表和处理2,CSAPP:信息的表和处理2,为CSAPP:信息的表和处理2;当小数域为非零,结果为NaN(Not a Number)

浮点数转换(单精度)

  根据IEEE 754标准,用科学计数法表示一个小数应该是这样的:
CSAPP:信息的表和处理2

注意小数点前面有个1
把5.8这个10进制小数,转化为IEEE 754表示的浮点数。
1.先用科学计数法表示

15.8/2 = 2.9
22.9/2 = 1.45

所以有CSAPP:信息的表和处理2

  1. CSAPP:信息的表和处理2
  2. 计算指数E(指数也有正负之分)
    CSAPP:信息的表和处理2
    CSAPP:信息的表和处理2
  3. 尾数frac = 0.45,转换为二进制,不断乘以2
运算 结果 整数部分
CSAPP:信息的表和处理2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
CSAPP:信息的表和处理2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.8*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.6*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.2*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.4*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.8*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.6*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.2*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2
0.4*2 CSAPP:信息的表和处理2 CSAPP:信息的表和处理2

根据IEEE 754只需要23位就行。01_1100_1100_1100_1100_1100_1100_1,所以
CSAPP:信息的表和处理2
最终浮点数表示为:

CSAPP:信息的表和处理2

参考

1.CSAPP:2.3章浮点数表示
2.码农翻身:看完这篇文章,你肯定理解什么是浮点数了

相关文章