思想
-
R(二、八、十六)进制转十进制:(用乘法,再相加)如:二进制(1101)b转十进制-->
1*1+0*2+1*2*2+1*2*2*2 -
十进制转R(二、八、十六)进制:(用除法,再拼接)除法取余,倒序拼接
R(二、八、十六)进制转十进制
二进制转十进制
main(){
int x; //待转换的二进制数
int sum=0; //将转换为的十进制数
int n=0;
scanf("%d",&x);
while(x>0){
sum+=x%10*pow(2,n);//pow()函数计算2的n次幂
x=x/10; //整除10
n++;
}
printf("sum=%d",sum);
}
八进制转十进制
main(){
int x; //待转化的二进制数
int sum=0; //将转换为的十进制数
int n=0;
scanf("%d",&x);
while(x>0){
sum+=x%10*pow(8,n);//pow()函数计算8的n次幂
x=x/10; //整除10
n++;
}
printf("sum=%d",sum);
}
二、八进制转十进制
main(){
int z;
printf("请选择二进制或八进制转换成十进制:");
scanf("%d",&z) ; //z为要选择的进制数
int x;
int sum=0;
int n=0;
scanf("%d",&x);
while(x){
sum=x%10*pow(z,n);
x=x/10;
n++;
}
printf("sum=%d",sum);
}
十六进制转成十进制
main(){
char x[10]; //数组x用于存放十六进制字符串
int i = 0, len = 0, temp = 0;
int sum = 0;
gets(x);//输入函数(专门对数组进行输入+可以有空格)
len = strlen(x); //判断数组长度
for (i = 0; x[i] != '\0'; ++i){//'\0'==null 循环判断条件也可以是 i<len
switch(x[i]){
case 'A': temp = 10; break;
case 'B': temp = 11; break;
case 'C': temp = 12; break;
case 'D': temp = 13; break;
case 'E': temp = 14; break;
case 'F': temp = 15; break;
default: temp = x[i]-'0'; break;//'0'=48 将数字字符转化为数字
}
sum += (temp*pow(16,len-1-i));
}
printf("%d",sum);
return 0;
}
十进制转R(二、八、十六)进制
十进制转二进制
main(){
int arr[20]; //数组arr用于存放二进制数字符串
int x; //待转换的十进制数
scanf("%d",&x);
int temp=0;
int i=0;
for(i=0;x!=0;i++){
temp=x%2; //注意:一定要先取模在取余
x=x/2;
arr[i]=temp;
}
// printf("%d\n",i);
i--;
for(i;i>=0;i--){ //倒序输出
printf("%d",arr[i]);
}
}
十进制转八进制
main(){
int arr[20];
int x;
scanf("%d",&x);
int temp=0;
int i=0;
for(i=0;x!=0;i++){
temp=x%8;
x=x/8;
arr[i]=temp;
}
// printf("%d\n",i);
i--;
for(i;i>=0;i--){
printf("%d",arr[i]);
}
}
十进制转二、八进制
main(){
int arr[20];
int x;
int z;
printf("请输入待转换的十进制数:")
scanf("%d",&x);
printf("%请选择要转换为几进制:");
scanf("%d",&z);
int temp=0;
int i=0;
for(i=0;x!=0;i++){
temp=x%z;
x=x/z;
arr[i]=temp;
}
// printf("%d\n",i);
i--;
for(i;i>=0;i--){
printf("%d",arr[i]);
}
}
十进制转十六进制
main(){
char arr[10]; //存放十六进制结果的数组
int temp;
int x; //待转换的十进制数
scanf("%d",&x);
int i=0;
for(i=0;x!=0;i++){
temp=x%16;
switch(temp){ //判断余数
case 10:
arr[i]='A';break;
case 11:
arr[i]='B';break;
case 12:
arr[i]='C';break;
case 13:
arr[i]='D';break;
case 14:
arr[i]='E';break;
case 15:
arr[i]='F';break;
default:
arr[i]=temp+'0'; //将数字转化为字符
break;
}
x=x/16;
}
// printf("%d\n",i);
i--;
for(i;i>=0;i--){
printf("%c ",arr[i]);
}
}