第03章 计算机进行小数运算时出错的原因
热身问题
1:二进制数0.1,用十进制数表示的话是多少?
0.5
2:用小说点后三位的二进制数,能表示十进制数0.625么?
0.5+0.125,二进制表示为:0.101。
3:将小数分为基数、尾数、指数和符号4部分进行表现的形式称为什么?
浮点数形式。浮点数是指把小数用“符号 尾数*基数的指数次冪”这种形式来表示。
4:二进制数的基数是多少?
2。
5:通过把0作为数值范围的中间值,从而在不使用符号位的情况下表示负数的方法称为什么?
EXCESS系统表现。excess |ɪkˈses| A.noun 过量 过度。如把八位二进制数的一半0111 1111看作是0,那么0111 1110则表示-1;
6:1010 1100.0101 0011这种二进制数,用十六进制数表示的话是多少?
AC.53
3.3节 计算机运算出错的原因
十进制数0.1转化成二进制数后,会变成0.000 1100 1100……(1100循环)这样的循环小数。就像十进制无法表示1/3一样,计算机这个功能有限的机器设备,无法处理无限循环的小数的。
很多编程语言都提供两种表示小数的数据类型。分别是双精度浮点数和单精度浮点数(double、float |fləʊt| verb 浮 漂浮 飘浮)。双精度浮点说类型用64位、单精度浮点数用32位来表示全体小数。
浮点数是指用符号、尾数、基数和指数四部分表示的小数。双精度浮点数:符号部分[1位]指数部分[11位]尾数部分[52位];单精度浮点数:符号部分[1位]指数部分[8位]尾数部分[23位]。尾数部分用的是“将小数前面的值固定为1的正则表达式”。
3.5 正则表达式和EXCESS系统
浮点数表示法中¥[尾数]部分用的是“将小数前面的值¥[固定为1]的正则表达式”。指数部分用的是“EXCESS系统表现”。以8位为例:0111 1111表示0[个人觉得没什么用,一样只能表示256种数]。尾数部分由于第一位必须是1,因此,省略该部分后就节省了一个数据位。