概述
N进制加法
- 1、N进制加法
1、N进制加法
最近遇到了一个问题,如何实现36进制加法?这个问题挺有意思。对于常见的10进制和二进制,我们往往都是一加了之,相加之后进位,进位再与前面的一位相加,再重复上述步骤,就得到了我们想要的值,对于10进制内的数我们这样相加没啥问题,但是对于N进制,则需要考虑下其中的本质问题。
在10进制以内,我们通过取余得到了新的值,本质上是对0-9这十个数字进行了取余查字典,那么对于N进制,我们同样可以取余查字典,只不过字典需要我们自己构造。对于36进制来讲,我们可以把0-9,A-Z作为字典基础,它们的组合字串为字典集合,在取余时,用0-35索引值代替对应的进制字符,这样就可以了。
在以下代码中演示了36进制的加法,其实只需要修改字典集合base,换成不同长度的字符,就能实现任意进制的加法。
@Test
public void test(){
System.out.println(add("9","1"));
}
private static String base="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public String add(String num1,String num2){
String result="";
int carry=0;
int ptr1=num1.length()-1,ptr2=num2.length()-1;
while (ptr1>=0||ptr2>=0||carry!=0){
if(ptr1>=0){
carry+=base.indexOf(num1.charAt(ptr1));
ptr1--;
}
if(ptr2>=0){
carry+=base.indexOf(num2.charAt(ptr2));
ptr2--;
}
result=base.charAt(carry%base.length())+result;
carry/=base.length();
}
return result;
}
最后
以上就是文静蛋挞为你收集整理的算法-N进制加法1、N进制加法的全部内容,希望文章能够帮你解决算法-N进制加法1、N进制加法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复