- A+
领500g书库,关注公众号:程叫兽的宝藏 (长按可复制!)
热门下载区==>点此链接进入<<<
目录(点击切换)
本文节选自《计算之魂》电子版:
//第3章//万物并编码象与表示/思考题32(FB)假设有一个等边三角形,三个顶点上都有一只蚂蚁,每只随机选择方向,沿着三角形的边走,行走的速度相同。那么这些蚂蚁不发生碰撞的概率是多少?(祝》如果有严只蚂蚁在一个正半边形的顶点上重复上述过程,概率又是多少?(人禄窒)提示:对三只蚂蚁可能选择的方向进行编码,由于每一只蚂蚁的决定是独立的,它们各自的选择可以被看成是三位二进制中的一位。找出所有可能的编码和符合条件的编码即可。3.3数据的表示、精度和范围在信息论中,若给定编码的长度,其所能够表示的不同信息的数量是有限的。在计算机中也是如此,给定16位二进制数字,不论怎么编码,最多能表示65536个不同数字。不考虑正负数,16位二进制数字所能表示的数字范围就是从0到6万多,这个范围在生活中大致够用,但是精度为个位数,也就是彼此之间最小的差距是1。如果想提高数字的精度,比如说商品的定价经常是整数后面加上0.99元或者0.88元,也就是说精确到小数点后面两位,那么对不起,它所能表示的数字范围就缩小为0到600记站了。当然,如果我们既想增加数字的范围,又想增加精度,那么唯一的办法就是增加编码的长度,或者说要用更多的信息了。比如32位二进制数字就可以表示大约43亿个不同的数字。如果我
计算之魂内容
们把精度定在小数点后面四位,那么能表示大到几百万的数字。这虽然比16位二进制能够表示的数字增加了,能够应付日常的大部分情况,但是依然不足以描述我们所了解的世界的全部情况,比如地球的质量大约是5.965X10”干克,而氨原子的质量大约是1.674X10”干克。要想通过增加编码长度的方法在计I]从0.00,0.01到655.36。11I//计算之魂/算机中同时表示这两个差异很大的数字,大约需要170位二进制数字,这显然不是一个有效的办法。怎样才能兼顾数字的动态范围和精度呢?大家可能会想到科学记数法,把一个数字变成两部分:表示精度的浮点数,以及表示数量级的指数。今天计算机普遍采用的IEEE754一2008《浮点数算术标准》就是这样设计的。该标准采用64位二进制编码,用1位表示正负号,用11位(从-1024到1023)表示数字的动态范围,即数量级,用52位表示精度(转换成十进制数大约是16位)。这样的设计可以表示(绝对值)小到10”、大到10"的数字。10?可是一个巨大无比的数字,如果我们把宇宙中的每一个原子再变成一个宇审,把这么多宇宙中的原子都再变成宇宙,这样放大三次,所有的原子数量加起来大约就是10岂。那么64位二进制编码怎么做到能够表达那么多数字呢?”其实这种记数方法
计算之魂azw3
并不能表示那么多不同的数字,中间的很多数字都漏过了。如果我们画一根长长的数轴,范围从0延伸到10玉,那么计算机双精度浮点数在这根数轴上只是稀稀拉拉地占据了一些点而已,大部分区域并未覆盖到,有别于我们日常使用的能够表示任意精度、任意大小的科学记数法。从对数字的编码就能看出计算思维和常人思维的不同之处。我们人类在世界上看到一件事后,会量化度量它,真实的数值该多少就说多少,该有多大就说多大,该有多准就说多准。计算机则是在一开始就根据给定的信息资源(编玛的长度)设计好编码的范围和精度,对于在现实世界中遇到的真实数值,计算机都是从那些设定好的编码中找一个对应。比如从107到10”之间的整数就有9X10”个,但是在计算机的双精度编码中只有大约10”个,也就是说其他很多数字都在一定误差范围内对应到了这107个数字中。当然,有人可能会问,这样不是很多数字就共享一个编码吗?怎样区分呢?答案是区分不出来。这就是编码长度和所能表示的数字范围之间不得不达成的一个平衡。计算机的很多应用不得不用更少的信息表示数据,比如在GPU的一些应用场中,不得不用8位二进制数〈也就是1字节)表示一个浮点数。很多人会觉得用1将改省节的信息表示整数才能表示256个数字,用来表示浮点数,范围也太小了吧?112
计算之魂 mobi
| 计算之魂这本书怎么样 | 计算之魂吴军在哪看 |
| 计算之魂讲的什么 | 吴军 计算之魂电子版 |
| 计算机之魂吴军 | 计算之魂 epub |
综上:吴军计算之魂哪里可以买到值得推荐阅读

