最近在学C语言,看了进制转换。以前也看过,但总是记不住,现在把进制转换的规则记录下来。

二、八、十六进制——>十进制,按权相加,这里的权就是所谓的位权(位置)

对于一个N进制数,转换规律:

针对整数部分从左往右,第J位的数g × ,依次类推,直到N的0次方。(从右往左,次方数以0开始依次递进)

比如:一个八进制的数:67532

        转换为十进制即为:6× + 7× +5× + 3× + 2× = 28160(十进制)

        将各个位的数字乘以位权,然后再相加,就得到了十进制形式

         一个十六进制数:2FB3

        转换为十进制为:2 ×  + 16 ×  + 11 ×  + 3 ×   =12467

二进制也是一样的规则。

小数部分: 从左往右,次方数以-1开始,依次推,第j位小数为g × 

比如:一个八进制数23.654

转换成十进制为:2 × + 3 ×  +6×  + 5× + 4×   = 19.8359375

十进制转换成N进制

整数部分:

将该整数以N为除数,进行整数,每次求商跟余数,一直到商为0时,从最后的的余数开始,取所有余数,即为转换为N进制后的数(“除 N 取余,逆序排列”

比如,一个十进制数36926,转换成八进制的过程为:

最后转换成八进制为110076 

小数部分

将小数部分乘以N,将结果中的整数部分剔除,再将剩余的小数部分再乘以N,再把乘积的整数部分提取,重复该动作,一直到最后的乘积不再有小数部分为止,取之前剔除的整数部分,从上往下顺序排列,即为转换的N进制数。(乘 N 取整,顺序排列)

比如一个十进制小数 0.930908203125,转换成八进制的过程如下:

最后转换成八进制数为:0.7345 

二进制转换为八进制跟十进制

将二进制分成三位一组,从低位向高位划分,不足位数时0添补,按照上面的N的几次方的转换方式,可以得到最后的数字

 

八进制转二进制,也是从低位向高位划分,1位八进制数转换为3位2进制数,以这样的方式进行转换

 

二进制转十六进制,是每4位二进制转换为1位十六进制

   十六进制转二进制,就是反过来,1位十六进制转换为4位二进制数

更多推荐

进制之间的转换规则