十进制数n到base进值的转换

//十进制数n到base进值的转换 (递归)
void convert(Stack<char>& S, __int64 n, int base) 
{ 
	//0 < n, 1 < base <= 16,新进制下的数位符号,可视base取值范围适当扩充
	static char digit[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B','C', 'D', 'E', 'F' };
	
	if (0 < n) 
	{ 	//在尚有余数之前,不断
		convert(S, n / base, base); //通过递归得到所有更高位
		S.push(digit[n % base]); 	//输出低位
	}
} //新进制下由高到低的各数位,自顶而下保存于栈S中

//尽管新进制下的各数位须按由低到高次序逐位算出,但只要引入一个栈并将算得的数位依次
//入栈,则在计算结束后只需通过反复的出栈操作即可由高到低地将其顺序输出

//十进制数n到base进值的转换(迭代版)
void convert(Stack<char>& S, __int64 n, int base) 
{ 
	static char digit[] 
	 = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
	while (n > 0) { //由低刡高,逐一计算出新进制下的各数位
		int remainder = (int) (n % base);
		S.push(digit[remainder]); //余数(当前位)入栈
		n /= base; //n更新为其对base的除商
	}
} //新进制下由高到低癿各数位,自顶而下保存于栈S中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值