1.二进制数0.1,用十进制数表示的话是多少?
2.用小数点后有3位的二进制数,能表示十进制数0.625吗?
3.将小数分为符号、尾数、基数、指数4部分进行表现的形式称为什么?
4.二进制数的基数是多少?
5.通过把0作为数值范围的中间值,从而在不使用符号位的情况下来表示负数的表示方法称为什么?
6.10101100.01010011这个二进制数,用十六进制数表示的话是多少?
答:1. 0.5
2.能表示
3.浮点数(浮点数形式)
4.2
5. EXCESS系统表现
6. AC.53
解析····
1. 二进制数的小数点后第一位的位权是2~= 0.5。也就是说,二进制数0.1→1×0.5→十进制数 0.5。
2. 十进制数0.625转换成二进制数是0.101。
3.浮点数是指把小数用“符号 尾数×基数的指数次幂”这种形式来表示。
4.二进制数的基数是2,十进制数的基数是10。依次类推xx进制数的基数是xx
5.EXCESS是“剩余的”的意思。例如,把01111111看作是0的话,比这个数小1的01111110就是-1。
6.整数部分和小数部分一样,二进制数的4位,就相当于十六进制数的1位。
用二进制数表示小数
计算机运算出错的原因
计算机这个功能有限的机器设备,是无法处理无限循环的小数的。因此,在遇到循环小数时,计算机就会根据变量数据类型所对应的长度将数值从中间截断或者四舍五入。我们知道,将0.3333…这样的循环小数从中间截断会变成0.333333,这时它的3倍是无法得出1的(结果是0.999999),计算机运算出错的原因也是同样的道理。
浮点数
许多编程语言提供了两种表示小数的数据类型分别为双精度浮点数和单精度浮点数。双精度浮点数类型double用64位表示,单精度浮点数float用32位表示。
浮点数是指用符号、尾数、基数和指数这四部分来表示的小数。因为计算机内部使用的是二进制数,所以基数自然就是2。因此,实际的数据中往往不考虑基数,只用符号、尾数、指数这三部分即可表示浮点数。也就是说,64位(双精度浮点数)和32位(单精度浮点数)的数据,会被分为三部分来使用。
如何避免计算机计算错误
首先是回避策略,即无视这些错误。根据程序目的的不同,有时一些微小的偏差并不会造成什么问题。例如,假设使用计算机设计工业制品。将100个长0.1毫米的零件连接起来后,其长度并非一定要是10毫米,10.000002毫米也没有任何问题。一般来讲,在科学技术计算领域,计算机的计算结果只要能得到近似值就足够了。那些微小的误差完全可以忽略掉。
另一个策略是把小数转换成整数来计算。计算机在进行小数计算时可能会出错,但进行整数计算(只要不超过可处理的数值范围)时一定不会出现问题。因此,进行小数的计算时可以暂时使用整数,然后再把计算结果用小数表示出来即可。例如,本章一开头讲过的将0.1相加100次这一计算,就可以转换为将0.1扩大10倍后再将1相加100次的计算,最后把结果除以10就可以了。
十六进制
用十六进制数来表示二进制小数时,小数点后的二进制数的4位也同样相当于十六进制数的1位。不够4位时用0填补二进制数的低位即可。例如,1011.011的低位补0后为1011.0110,这时就可以表示为十六进制数 B.6(图3-10)。十六进制数的小数点后第1位位权1/16=0.0625