进制转换小结

1.十进制转成R进制。取余,然后倒序输出,注意10-15用A-F表示。

例如 12(10) == 110(3)

void itoa(int n, int R){
	int a[M],i = 0;
	while(n > 0){
		a[i++] = n%R;
		n /= R;
	}
	i--;
	for(i; i >= 0; i--){
		cout<<a[i];
	}
}

 2.二进制转换成R进制。取余,然后倒序输出。

例如:111011001/111=1000011 余100,七进制数4
   1000011/111=1001 余100,七进制数4
   1001/111=1 余10,七进制数2
   1/111=0 余1,七进制数1
   (111011001)2=(1244)7

(转换成4,8,16进制的时候,先补充0,直接2,3,4位一取,换成十进制数,注意10-15用A-F表示)

例如: 11101010 (2)  == 1110 1010 == EA (16) 

    11101010 (2)  == 011 101 010 == 352 (8)

       11101010 (2)  == 11 10 10 10 == 3222 (4)

3.R进制转换成10进制

abcd(R) == a * pow(R,3) + B * pow(R,2) + C * pow(R,1) + D * pow(R,0)

4.补充一个c语言里面的进制转换函数 _itoa(int , char *, R)  (在头文件cstdlib里面。  #include<cstdlib>  )

函数的三个参数,第一个是被转换的数,第二个是转化结果的地址,第三个是目标进制。

#include <bits/stdc++.h>
using namespace std;

int main(){
	char s[100];
	itoa(15,s,2);
	cout<<s<<endl;
	return 0;
}
原文地址:https://www.cnblogs.com/stul/p/9975523.html