华师一附中OI组
标题:
进制转换
[打印本页]
作者:
admin
时间:
2018-7-23 20:59
标题:
进制转换
1、十进制转二进制
2、二进制转十进制
3、十进制转16进制
4、十六进制转十进制
作者:
admin
时间:
2018-7-23 20:59
十进制转十六进制 就是把这个数字不停地去除以16,直到为0为止,除的余数要进行处理,<=9 的话输出对应的数字,>=10的话得输出ABCDEF
#include <iostream>
using namespace std;
int i,x,k;
string s;
int main()
{
cin>>x;
while (x>0)
{
k=x%16;
x=x/16;
if (k<=9) s=char('0'+k)+s;
else s=char('A'+k-10)+s;
}
cout<<s;
return 0;
}
复制代码
十六转10 的话就是把每一位摘下来处理,这里要注意秦九昭算法。
#include <iostream>
using namespace std;
int i,x,k,l;
string s;
int main()
{
cin>>s;
x=0;
l=s.size();
for (i=0; i<=l-1; i++)
{
if (s[i]<='9') k=s[i]-'0';
else k=s[i]-'A'+10;
x=x*16+k;
}
cout<<x;
return 0;
}
复制代码
作者:
admin
时间:
2023-1-4 17:23
高手的进制转换(暂时不建议大家学)
1、十进制转十六进制,巧妙的利用了cout里面的hex格式,八进制可以使用oct
#include <bits/stdc++.h>
using namespace std;
int x;
int main()
{
cin>>x;
cout<<hex<<x;
return 0;
}
复制代码
2、二进制有点特殊,没有oct和hex的表达方式,但是有个非常有意思的东西家叫做bitset
#include <bits/stdc++.h>
using namespace std;
int x;
int main()
{
cin>>x;
bitset<32> set(x); //定义一个32位的bitset,让它的值和x相等
cout<<set<<endl;
return 0;
}
复制代码
3、十六进制转十进制,就干脆使用cin>>hex>>x,把x按十六进制读进来,然后输出
#include <bits/stdc++.h>
using namespace std;
int x;
int main()
{
cin>>hex>>x;
cout<<x<<endl;
return 0;
}
复制代码
4、二进制转十进制的话也可以使用bitset读入二进制数
#include <bits/stdc++.h>
using namespace std;
int main()
{
bitset<16> x; //定义16位的bitset
cin>>x;//按2进制的形式读入
int y= x.to_ulong();//转成十进制数
cout<<y<<endl;
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2