最近在学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位二进制数