读书笔记:3.1:(1)二进制数小数点后第1位的位权是2-1=0.5,因此二进制数0.1→1x0.5 →十进制数0.5。1.十进制数0.625转换成二进制数是0.101。(2)浮点数是用“符号尾数x基数的指数次幂”的格式来表示小数的。(3)二进制的基数是2,十进制的基数是10,也就是说,xx进制的基数是xx。(3).把01111111看作0,那么比这个数小1的01111110就是-1。(4)无论是整数部分还是小数部分每4位二进制数都相当于1位十六进制数。
3.2:在二进制中,整数部分的位权第1位是2的0次幂,第2位是2的1次幂,以此类推。小数部分的位权,第1位是2的-1次幂,第2位是2的-2次幂,以此类推。从0次幂开始,高位方向的位权是按1次幂、2次幂这样的方式递增的,因此低位方向的位权自然要按-1次幂、-2次幂这样的方式递减。不仅是二进制,十进制和十六进制里也是一样的。
3.3:无法准确表示的值就只能使用近似值来表示。计算机能力有限,无法处理无限的循环小数只能根据变量所对应的数据类型的比特数,对数值进行截断或者采取四舍五入的处理。因此,如果将0.3333.这个循环小数从中间截断变成0.333333,也会产生同样的问题,将它乘以3的结果也不是1(而是0.999999)。
3.4 很多编程语言提供了两种能表示小数的数据类型:双精度(doubleprecision)浮点型和单精度(singleprecision)浮点型。双精度浮点型的长度为64位,单精度浮点型的长度为32位。在C语言中,双精度浮点型称为double,单精度浮点型称为float。这些数据类型都使用了浮点数2来表示小数。 浮点数将小数分为符号、尾数基数和指数4个部分来表示。 浮点数的表示方法有很多种,这里为大家介绍的是使用最为广泛的IEEE标准。双精度浮点数和单精度浮点数在表示数值时所使用的位数不同,双精度浮点数能表示的数值的范围比单精度浮点数的大。
符号部分使用1位来表示数值的符号。其中“1”表示“负数”,“0”表示“正数或0”,这和二进制整数中的符号位是相同的。数值的大小通过尾数部分和指数部分来表示。
3.5:尾数部分使用的 规格化表示法其作用是将表示形式不一致的浮点数用统一的形式来表示。这样根据特定的规则来表示小数的方法就叫作规格化表示法。
3.7:如何避免计算机计算出错.用浮点数来处理小数是计算机会计算出错的原因之一.(1)第一种是回避策略,也就是忽略错误。(2)用整数替代小数进行计算。计算机在计算小数时可能会出错,但在计算整数时(只要不超过规定的数值范围)完全不会出错。因此,我们可以在计算时临时使用整数,然后将计算结果用小数表示。
3.8: 在C语言程序中,在数值前面加上“0x”前缀就可以表示十六进制数。4位二进制数正好相当于1位十六进制数。用十六进制来表示数字,其所需的位数是二进制的1/4。