第241章 仓颉第二版(2/2)
这是上周弹道计算之后,整个计算机所定下的首要改进方向。
主要是弹道计算这个东西,天生就跟浮点运算绑在一起,弹道计算每发迭代二十多次,程序里一大半的代码都在进行浮点运算。
这种既要大范围、又要高精度的活,定点数根本扛不住。
所谓定点,就是小数点的位置固定死,比如规定小数点后面留三位,那0.001就是最小单位,再小就没法表示了。
而浮点,则是把一个数拆成尾数和指数两部分,比如3.14×102,尾数管精度,指数管范围,两边都不耽误。
仓颉这套编程语言,毕竟只是第一版,当初设计的时候,只做了定点数运算的宏。
浮点运算虽然硬件能做,但语言层面没有对应的指令,程序员写程序的时候,还是得自已手搓。
打个比方,硬件就像一个会算账的伙计,加减乘除都能干。可仓颉给这个伙计的“口令簿”里,只有整数的口令,没有小数的口令。
你要让他算3.14加2.71,就得先把3.14拆成314乘以10的负二次方,把2.71拆成271乘以10的负二次方,对齐指数,再加尾数,最后再规格化回去。
一套流程下来,光写代码就得十几行。
上周算弹道的时候,周明就是这么干的,不但写起来费劲,还容易出错。
现在要做的,就是在仓颉里加上浮点运算的宏,把对阶、尾数运算、规格化这些步骤,全部封装成一个宏。
这样他们再写程序的时候,弹道程序的代码量能砍掉一半以上,出错的概率也会大大降低,只要写一句“浮点加ABC”,编译器就会自动展开成那十几行的硬件指令。
周明现在写的,就是最后一个浮点除法的展开规则。
他的铅笔在纸上走走停停,时不时停下来,对着仓颉的指令表翻一翻。
······
机房的另一头,赵家骏正蹲在地上,对着一个刚焊好的小盒子傻乐。
他这种傻乐的状态已经持续了一周了,可见特等功对他的鼓舞。
那个盒子不大,大约只有巴掌宽,外壳是铁皮敲出来的,一头接着纸带盘,另一头连着机柜的输入接口。
这就是改进其二的:光电读孔机。
说起来它的原理并不复杂,纸带从一排光源和光电管中间穿过,有孔的地方,光透过去照在光电管上,就会输出一个电信号,而没孔的地方,光被挡住,就没有信号。
原理简单,做起来却有讲究。
最大的难点,是信噪比。
纸带哪怕没孔的地方,也会漫反射一点光过去,如果放大电路的增益调得不好,就会把这种微弱的漏光当成信号,读出来的字符自然便不准了。
还有纸带的速度也会有影响......
赵家骏就在这上面卡了三天。
最后还是林远给了一个三级放大加施密特整形的电路,才把问题解决的。
赵家骏安装完毕后,伸手按下了启动键开始自测。
纸带盘“哗啦”一声转动了起来,纸带从缝隙里匀速穿过。
机柜那头,打印机“嗒嗒”地响了,输出的是一行测试字符:ABCDEFG。
没有错码!
赵家骏随后又跑了三卷纸带,每卷一百个字符,仔细核对完确认无误后,基本可以确定光电读孔机没啥问题。
他这才站起身,拍了拍膝盖上的灰,冲机柜那头喊了一嗓子:“华教授,读孔这边搞定了!”
......