进制转换
C语言
十进制转d进制(d<10)
原理很简单,按照计算方法算出每一位后存入数组,倒序输出即可~
int main()
{
int n,i=0,x,j,d;
int arr[1000];
scanf("%d%d",&n,&d);
if(n==0)
printf("0");
else{
while(n>0){ //想不起来的话把d设成2自己代入一遍
x=n%d;
n/=d;
arr[i]=x;
i++;
}
for(j=i-1;j>=0;j--){ //逆序输出
printf("%d",arr[j]);
}
}
return 0;
}
d进制转十进制(d<10)
int main()
{
int n,x=1,num=0,d;
scanf("%d%d",&n,&d);
while(n>0){
num+=(n%10)*x; //拨出最后一位乘以位权
n/=10; //舍弃最后一位
x*=d; //位权增加
}
printf("%d",num);
return 0;
}
十进制转十六进制
与前面的“十进制转d进制”差不多,只是用字符数组代替了整型数组
int main()
{
int n,i=0,j;
char arr[1000],brr[20]={"0123456789ABCDEF"};
scanf("%d",&n);
if(n==0)
printf("0");
else{
while(n>0){
arr[i]=brr[n%16];
n/=16;
i++;
}
for(j=i-1;j>=0;j--){
printf("%c",arr[j]);
}
}
return 0;
}
C++
在查找资料的时候发现C艹自带进制转换的函数,顺便记录一下~
oct 是八进制形式
dec 是十进制形式
hex 是十六进制形式(setiosflags(ios::uppercase)可转换为大写输出)
C语言没有专门的二进制转换,故只能规定位数输出二进制
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
cout<<bitset<8>(n)<<endl;
cout<<oct<<n<<endl;
cout<<dec<<n<<endl;
cout<<setiosflags(ios::uppercase)<<hex<<n<<endl;
return 0;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿刁!
评论