在编程工做种,咱们时常须要对不一样的进制的数进行转换,以方便咱们的工做、阅读和理解。在计算机领域,主要设计二进制、八进制、十进制和十六进制,下面咱们就来说讲这四种机制的整数相互转换方法。程序员
1、查表法编程
就是咱们制做一张包含各类进制的值一 一对应数值表,须要时查表就得,可是,咱们知道,这不太现实,由于数是无穷的,咱们不可能作一张无穷的表。在次可是,这也不是说查表法就不用了,其实咱们一直在使用,你可能会说,没有,没见过,不对,有的,就在你的脑海里,我相信绝大部分程序员都有,好比,问你,(15)10对应的十六进制是多少,你确定张口就答(F)16,为何你能很快答出,是由于咱们在平常工做和学习中,无形在脑海里创建了这张表。只是这张表颇有限,更大的数你就不能一口答了,因此须要其余的转换方法,可是其余方法会用到查表法。学习
咱们至少要创建起以下的一张表spa
2、短除法设计
短除法运算方法是先用一个除数除以能被它除尽的一个质数,以此类推,除到商是质数为止。具体在咱们的进制换算里,当一个M进制数转N进制数时,就是用这个数除N取余,逆序排列。具体作法是:将N做为除数,用M进制整数除以N,能够获得一个商和余数;保留余数,用商继续除以N,又获得一个新的商和余数;仍然保留余数,用商继续除以N,还会获得一个新的商和余数;如此反复进行,每次都保留余数,用商接着除以N,直到商为0时为止blog
下面举例:二进制
结果,(756)8--->(1EE)16程序
二进制转其余进制和十六进制转其余进制我就不一一举例了,经过上面的例子,咱们能够看到用短除法咱们是能够进行任意进制的相互转换的,同时咱们也能够发现,将高进制向低进制(只限于这几种进制,咱们姑且认为高低顺序为:二进制<八进制<十进制<十六进制)转换时,要先有一步进制基数的查表换算过程,在加上咱们人对2、8、十六进制的四则运算不熟悉,因此这三种进制进行短除法换算比较困难。因为十进制的基数自己就是十六进制的数码,同时表明的量意义也同样,因此总的来讲,短除法特别适合十进制向2、8、十六进制的转换。3、位权相加法方法
咱们知道,任何进制的数都是由:位、数码、位权等要素构成,这也为咱们进制间的转换提供了一种方法:位权相加法。假设当前数字是N进制,那么:对于整数,从右往左看,第i位的位权等于Ni-1。更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是1,那么它所表示的数值大小就是该位的位权。当咱们由M进制转为N进制时要进行这样的运算:a*Ni-1+aNi-2+...+a*N1+a*N0。im
下面举例:
咱们能够看到,位权相加法特别适合2、8、十六进制转十进制,对其它状况则很困难,好比二进制转8、十六进制时先用了合位法,特别是高进制转低进制更是困难。
4、拆位拼接法
因为二进制、八进制和十六进制的基数有着这样的关系:8=23,16=24,也就十说一位八进制数等于3位二进制数,一位十六进制数等于4位二进制数,因此有以下转换方法。
5、借桥法
对某些困难的状况,咱们能够先转位十进制或二进制,而后在转为对应的进制,我成为借桥法,中间的进制就是桥。好比十六进制转八进制,咱们能够先用位权相加法转为十进制,在用短除法转为八进制。这就不举例了。
6、总结