进制转换:十进制转N进制,N进制转十进制

前几天敲代码遇到进制转换的问题,虽然很多语言已经帮我们封装好API提供给我们使用,让我们方便的进行进制转换。但做为一个富有钻研精神的小码农,决定研究转换规律,并封装好以便使用。

首先理解下进制的概念:

我个人把进制理解为一个单位。比如说,2进制便是两个作为一组,4进制就是4个作为一组或一个单位,n进制就是n个作为一个单位。

十进制转N进制:

首先我们了解下十进制转二进制,举个例子,100转二进制:

从上面我们知道二进制就是2个作为一组,那我们首先用100整除2就可以知道有多少个二进制组。咳咳,不知道这样说有没有误导你们。就像这样:

100/2=50···0

50/2=25···0

25/2=12···1

12/2=6···0

6/2=3···0

3/2=1···1

1/3=0···1

通过这样不断的整除,直到商为0,然后我们把余数从下到上串起来为:1100100 ,这是100转为二进制的样子。十进制转其他进制也是一样的,例如100转7:

100/7=14···2

14/7=2···0

2/7=0···2

答案是202,可以反向验证一下:202(7)=2x7^2+0x7+2x7^0=98+0+2=100(10),对的哈哈。

所以十进制转N进制可以表示为:

100/N=商1···余数1

商1/N=商2···余数2

......

商n/N=0···余数n

就是这样的过程。

用程序可以表示为(java实现):

/**
* @param value 需转换的十进制
* @param n n进制
* @return
*/
static int _10_to_N(int value,int n){
  String nStr="";
  int i=value;
  while(i!=0){
    nStr=i%n+nStr;//取模跟在前面
    i=i/n;
  }
  return Integer.parseInt(nStr);//字符串转int,并返回
}

调用:

int nValue= _10_to_N(100,2);

猜你喜欢

转载自www.cnblogs.com/xuyj/p/9185054.html