游民星空 > 资讯中心 > 正文

技术宅惊世之作 《我的世界(Minecraft)》如何打造计算机

2014-08-28 12:24:16 来源:人人网 作者:季文瀚 编辑:暗影猫 浏览:loading

浮点加减法算法

  这个也是用的通用算法。

  按照下面几个步骤来:

  浮点数由阶码和尾数构成,可以看做是二进制的科学计数法。阶码就相当于科学计数法的那个幂次方数,尾数就相当于有效数字的具体数值。比如0.11x2^3,其中0.11是尾数,3是阶数。IEEE754标准的浮点数规格如下

游民星空

  这是WIKI上的表格,要不要用偏正值其实无所谓,只要知道单精度浮点数(single precision floating point)的位数是32bit,指数位数=8,尾数位数为=23,还有一位符号位。其中指数位数中有一位是指数的符号位即表示其范围为-127到127,不算这个符号位就是指偏正值0-255,其实含义是一样的。而单独的那个符号位是给整个浮点数用的。

  设有两个浮点数x和y,它们分别为

  x=2Ex•Mx

  y=2Ey•My

  其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。

(1) 比较阶码大小并完成对阶

  两浮点数进行加减,首先要看两数的阶码是否相同,即小数点位置是否对齐。若二数阶码相同,表示小数点是对齐的,就可以进行尾数的加减运算。反之,若二数阶码不同,表示小数点位置没有对齐,此时必须使二数阶码相同,这个过程叫作对阶。要对阶,首先应求出两数阶码Ex和Ey之差,即△E = Ex-Ey。若△E=0,表示两数阶码相等,即Ex=Ey;若△E>0,表示Ex<Ey;若△E<0,表示Ex>Ey。当Ex≠Ey 时,要通过尾数的移动以改变Ex或Ey,使之相等。原则上,既可以通过Mx移位以改变Ex来达到Ex=Ey,也可以通过My移位以改变Ey来实现Ex=Ey。但是,由于浮点表示的数多是规格化的,尾数左移会引起最高有效位的丢失,造成很大误差。尾数右移虽引起最低有效位的丢失,但造成误差较小。因此,对阶操作规定使尾数右移,尾数右移后阶码作相应增加,其数值保持不变。显然,一个增加后的阶码与另一个阶码相等,增加的阶码的一定是小阶。因此在对阶时,总是使小阶向大阶看齐,即小阶的尾数向右移位(相当于小数点左移)每右移一位,其阶码加1,直到两数的阶码相等为止,右移的位数等于阶差△E。

(2) 尾数求和运算

  对阶结束后,即可进行尾数的求和运算。不论加法运算还是减法运算,都按加法进行操作,其方法与定点加减法运算完全一样。我这里就照搬常用加减法器。

(3) 结果规格化

  在浮点加减运算时,尾数求和的结果也可以得到01.ф…ф或10.ф…ф,即两符号位不等,这在定点加减法运算中称为溢出,是不允许的。但在浮点运算中,它表明尾数求和结果的绝对值大于1,向左破坏了规格化。此时将运算结果右移以实现规格化表示,称为向右规格化。规则是:尾数右移1位,阶码加1。当尾数不是1.M时需向左规格化。

(4) 舍入处理

  在对阶或向右规格化时,尾数要向右移位,这样,被右移的尾数的低位部分会被丢掉,从而造成一定误差,因此要进行舍入处理。简单的舍入方法有两种:一种是"0舍1入"法,即如果右移时被丢掉数位的最高位为0则舍去,为1则将尾数的末位加"1"。另一种是"恒置一"法,即只要数位被移掉,就在尾数的末尾恒置"1"。

  在IEEE754标准中,舍入处理提供了四种可选方法:

  就近舍入 其实质就是通常所说的"四舍五入",这是默认的常用方法。例如,尾数超出规定的23位的多余位数字是10010,多余位的值超过规定的最低有效位值的一半,故最低有效位应增1。若多余的5位是01111,则简单的截尾即可。对多余的5位10000这种特殊情况:若最低有效位现为0,则截尾;若最低有效位现为1,则向上进一位使其变为 0。

  朝0舍入 即朝数轴原点方向舍入,就是简单的截尾。无论尾数是正数还是负数,截尾都使取值的绝对值比原值的绝对值小。这种方法容易导致误差积累。

  朝+∞舍入 对正数来说,只要多余位不全为0则向最低有效位进1;对负数来说则是简单的截尾。

  朝-∞舍入 处理方法正好与 朝+∞舍入情况相反。对正数来说,只要多余位不全为0则简单截尾;对负数来说,向最低有效位进1。

  本浮点加减法器符合IEEE754单精度fp32浮点标准,但由于体积问题没有使用舍入法,所以精度有一定损失。整体硬件单元的外观上面已经有一个图给出了。我再贴两张图描述一下具体细节。

  下图中间一大块都是对阶判断单元,也就是再下一张图里右下角突出来的那一块。右上方紫色橙色相间的是结果规格化单元。

游民星空

  下图中呈对称状的三角形一共有三层,都是移位单元用于对阶,其后方,也就是图中藏在移位模块下方红绿相间的是尾数求和加减法器。

更多相关资讯请关注:我的世界专区

上一页 1 2 3 4 5 6 7 8 9 10 11 下一页
友情提示:支持键盘左右键“← →”翻页
人喜欢
游民星空APP
随时掌握游戏情报
code
休闲娱乐
综合热点资讯
单机游戏下载
好物推荐
游民星空联运游戏
技术宅惊世之作 《我的世界》如何打造计算机https://imgs.gamersky.com/upimg/2014/201408281220432943.jpg