所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

关于进制之间的转换算法?

发布时间:2020-04-12 09:13:28

资讯分类:进制  算法  转换  之间  末尾  逗号  四位
关于进制之间的转换算法?

我教人的办法是统一用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进制之间转化很快。而且因为是两步,如果第一步没问题第二步错了,从中间来就好。整个过程只有加减法,比什么除几取余简单多了。

留言与评论(共有 0 条评论)
   
验证码:
Top