数字进制间的转换方法
我教人的办法是统一用2进制中转。2进制转16进制,从末尾隔四位打逗号,最前面不足四位补0,然后把0000-1111转化成对应的0-F。
转8进制就是隔三位打逗号,然后把000-111转化成0-7。
16进制转2进制就是逆操作,逐位把0-F转换成0000-1111。8进制逐位转为000-111。
2进制转10进制,从末尾开始逐个在2进制每位数字下写1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192……(最好背下来这几个,后面不够用再临时算)。
这样就变成了上面一行2进制,下面一行2的幂。
然后看上面是1的,把下面加起来就行了。
10进制转2进制,也要用到上面那两行,先看这个10进制的数在上面第二行的哪两个数之间,比如5398,在4096和8192之间,那就在4096的那位写1,然后用5398减4096得到1302,用1302再和2048比,比之小,在2048这位写0,然后继续和1024比…总之就是从高位往低位比大小,大的写1同时做减法,小的直接写0。
其实理论上也是逆操作,把它拆成2的幂的和的表达式,有的写1没的写0。
其他转化的话,先中转成2进制然后转成你想要的,这样看起来貌似多了一步其实速度也不慢,因为2进制和16/8进制之间转化很快。
而且因为是两步,如果靠前步没问题第二步错了,从中间来就好。
整个过程只有加减法,比什么除几取余简单多了。