小数在计算机中为什么会有误差?说明机器数、码制、浮点数、以及数制转换的一些问题

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1.常用的数制

十进制 0~9

八进制 0~7

二进制 0~1

十六进制 0~F

2.十进制 转 各个进制

方法 : 除以基数取余反向

3.2进制 8进制 16进制 转十进制

二进制

___________________________

2^3 2^2 2^1 2^0

1 0 0 1 X

=8+ 1 = 9

八进制

———————————--------------

8^1 8^0

1 7

=1*8 + 7*1 = 15

十六进制类似。

4.二进制转 十六进制 八进制

二转八

三位一组 结果并在一起

二转十六

四位一组 结果合并在一起

5. 整数在内存中的存储,采用二进制

符号位

原码 正数 0

负数 1

反码 正数 和原码相同

负数 在原码基础上,符号位不变,各个位取反

补码 正数 和源码相同

负数 在反码基础上,符号位不变,末位 +1

案例↓↓↓↓↓↓

————————————————————————————

原码 反码 补码

5 0000 0101 0000 0101 0000 0101

-5 1000 0101 1111 1010 1111 1011

6. 机器数 和 真值

用“+”、“-”号加绝对值来表示数值的大小,用这种形式表示的数值在计算机中称为“真值”

符号数码化后,二进制数的最高位“0”表示正号,“1”表示负号,用这种形式表示的数值在计算机中称为“机器数”

机器数中小数点隐含不占位

机器数 有符号 纯整数 点在最低位之后

纯小数 点在符号位之后,最高位之前。

无符号 纯整数 点在最低位之后

纯小数 点在最高位之前

7.小数的存储

计算机中小数以二进制(浮点数)形式存储。

首先是一个十进制小数形式,转化成二进制的计算案例。

————————————————————————————————

0.8125 转换成二进制

其实这种情况是赶巧了得到一个确切的值。

————————————————————————————————

但对于某些特殊情况是这样的

8.浮点数产生误差的原因

有两钟情况,会产生误差

1)以二进制保存浮点数,所以一些原本有限位的小数,按照上面方法运算以后,可能变成一个无限循环的小数。

————————————————————————————————

(十进制)0.9转成2进制是无限循环小数0.1110011001100110011...

————————————————————————————————

2)计算机保存浮点数的精度有限,例如float可以保留十进制最多7位(二进制23位)有效数字,double 可以保留十进制15~16位(二进制52位)有效数字。那有效数字以后的就被忽略了。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航