算法笔记3.5---进制转换

一、将 p 进制数 x 转换为 十进制数 y

int y = 0, product = 1; //product循环中会不断乘 p , 得到 1、p 、p^2...
while( x != 0 ) {
	y = y + (x % 10) * product;  //  x % 10 是为了每次获取x的个位数
	x /= 10;  // 去掉 x 的个位
	product *= p;
}

二、将十进制数 y 转换为 Q进制数 z
用“除基取余法”,基----要转换成的进制Q

int z[40], num = 0;  //数组 z 存放 Q进制数 y 的每一位, num为位数
do {
	z[num++] = y % Q;  //除基取余
	y = y / Q; 
} while( y != 0); // 当商不为 0 时进行循环 

z数组从高位 x[num-1] 到低位 z[0] 则为Q进制z,进制转换完成。
代码中使用do……while 语句而不是while语句的原因是:
如果十进制数 y 恰好等于 0,那么使用 while 语句将直接跳出循环,导致结果出错 。
正确结果应当是数组 z 中存放了 z[ 0 ] = 0 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值