光怪陆离2

0/1表示的缺陷以及计算机的局限性

十进制小数不一定都能等值转化为二进制表示

 另一方面,即使是可以精确计算出来的数值,不论整数还是小数,因为计算机内部数位的限制,计算机能够处理的数据都是有取值范围的,在数学理论中可能完成的计算,实际在计算机中可能无法实现。例如现实的计算机永远比不上图灵机,图灵机拥有一条理想的,无限延伸的纸带,计算思维是离散的,有限的,数学思维是连续的,无限的。在用计算机求解现实技术时,必须考虑计算机的局限性带来的限制,不管计算机的发展速度多么硬,它的存储能力多么强,它依然是个有限的系统,都要考虑用多少个二进制位去描述一个数或者一种信息。

为了计算存储信息的0/1的数量,计算机科学领域定义了一些专有的计量单位

比特或者位,bit缩写为b,0/1编码中的一位,是信息量的最小度量单位。

字节,BYTE缩写为B,一字节等于8比特,描述计算机存储空间的常用计量单位。

举例,8G内存条实际含义是8*2^^30B,也就是8GB

位模式:用于描述信息的0/1数字的位数,N位(Bn-1,Bn-2,B0)即采用了N位的位模式。

 用小灯泡的开关表示0/1,因为有8个小灯泡,所以位模式为8。

 256种整数解释为非负整数,所以表示为0~255,如果超过了这个范围,计算机就会因为无法正确表示超过范围的数而报错

这种出错的现象在计算机中叫溢出,而现代计算机处理溢出的方法与这个加法器是类似的。就是直接忽略,程序虽然继续执行,但结果是不正确的。

 计算机由于位模式始终是有上限的,数据进入计算机与实际数据是有误差的,这些数据可能带来错误,这些错误不是因为溢出,而是数据精度带来的误差问题

 当时系统已经运算了100小时,误差已经达到了0.3433秒,爱国者导弹的速度为2000米每秒,0.3433秒的误差导致了约687米的误差,爱国者导弹的杀伤半径为20米,意为只有飞毛腿导弹在爱国者导弹20米内才能被拦截,否则就不行,所以飞毛腿导弹飞入美军军营。

系统每运行一个小时 ,有6.87米的误差,只要不超过3个小时,就还可以控制在20米之内,所以A选项就是最快捷的。B选项是降低了误差,C选项是例如过一段时间给0.1一个补偿,或者直接改用别的用计算机可以精确表示的数来作为步长。

用计算机表示数的时候要学着考虑范围和精度,有意识避免和减少误差和错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值