关于进位制的一点[思考]
2023-06-08 20:56 作者:Nacaexchanger | 我要投稿
计算机里都是十六进制数,设置起来都需要转写。用的多了,就想找规律。首先说短除法,不但十进制变二进制可以用,理论上任何进制转换都能用。本质上这是一个不断求前一位的过程。比如把560,这是主板trfc常见值,转化成16进制。从第零位开始,先求第零位前一位,也就是第一位是多少,560有35个16,没有剩余,第一位是0;再求第二位,35个16有多少个16x16,有2个16x16加3个16,第二位补上3就行了;再求第三位,还有2个16x16,那就不用再计算了,第三位是2。结果就是230。这个过程规范一下就是短除式。
我们注意到这个过程只需要用到10进制的除法,甚至没有遇到9以上的余数需要转写成16进制。实际上在其他进制转化时都要用相应进制的除法,而这就需要掌握相应进制的乘法表。那如果要基于10进制乘法表手工编写16进制的乘法表,怎么样计算量最小呢?从1x1列到15x15再一一转写成16进制数显然不是一个小工程。我们分类讨论。首先考虑不需要转写的式子(以下出现转写包括两种含义i算式的改写;ii十进制数写成十六进制数。不过算式改写就是改其中的数字,两种含义姑且不做区分)相乘结果小于10的式子不需要转写,其实就是3x3之前不变;然后剩下10进制乘法表和16进制乘法表里均有的式子只需要结果转写;最后10进制表里没有的16进制乘法表算式,用十进制数列式,用前面已经转写过的算式计算。除法是乘法逆运算,理论上这种分类讨论大量运用乘法的方案是快于纯转写的方案的。
不过只理清理论还是会出错,因为计算机大量数不是1开始而是从零开始,所以诸如打算设置成20的项进系统一看设置成了19也是有发生的。