C/C++ 进制转换算法-除K取余和按位加权求和

在这里插入图片描述

十进制转K进制 - 除K取余

十进制转N进制的转换步骤:

  1. 将给定的十进制数不断地整除N,直到商为0。
  2. 将每步计算所得到的余数(从第一步起依次记录),倒序排列。
  3. 根据余数的数位,以N为基数,组成N进制数。

将十进制数312转换为十六进制数的计算步骤:

  1. 312 ÷ 16 = 19 … 12(商19,余12)
  2. 19 ÷ 16 = 1 … 3(商1,余3)
  3. 1 ÷ 16 = 0 … 1(商0,余1)
  4. 倒序排列所得到的余数:1 3 12
  5. 根据十六进制,用数字代表余数: 12 -> C 3 -> 3 1 -> 1
  6. 所以十进制312对应的十六进制数是:138 这个方法通过模N运算,依次获取数字每一位的N进制表示,然后倒序排列,就可以实现十进制到任意N进制的转换。
#include
int main()
{int a = 3601;int k = 2;while(a){//倒序printf("%d",a%k);a/=k;}
}

K进制转十进制-按位加权和

而把n进制转十进制的方式就是按位加权,例如十进制735转为八进制
x = 7 * 82 + 3 * 81 + 5*80

#include 
#include int convertFromBaseK(int baseKNum, int K) {int decNum = 0;int power = 0;while(baseKNum > 0) {int rem = baseKNum % 10;baseKNum = baseKNum / 10;decNum = decNum + (rem * pow(K, power));power++; }return decNum;
}int main() {int K = 16; int hexNum = 0x13A;int decNum = convertFromBaseK(hexNum, K);printf("%X in base %d is %d", hexNum, K, decNum);return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部