华师一附中OI组

标题: 进制转换 [打印本页]

作者: admin    时间: 2018-7-23 20:59
标题: 进制转换
1、十进制转二进制
2、二进制转十进制
3、十进制转16进制
4、十六进制转十进制
作者: admin    时间: 2018-7-23 20:59
十进制转十六进制  就是把这个数字不停地去除以16,直到为0为止,除的余数要进行处理,<=9 的话输出对应的数字,>=10的话得输出ABCDEF
  1. #include <iostream>
  2. using namespace std;
  3. int i,x,k;
  4. string s;
  5. int main()
  6. {
  7.     cin>>x;
  8.     while (x>0)
  9.     {
  10.         k=x%16;
  11.         x=x/16;
  12.         if (k<=9) s=char('0'+k)+s;
  13.         else s=char('A'+k-10)+s;
  14.     }
  15.     cout<<s;
  16.     return 0;
  17. }
复制代码
十六转10 的话就是把每一位摘下来处理,这里要注意秦九昭算法。
  1. #include <iostream>
  2. using namespace std;
  3. int i,x,k,l;
  4. string s;
  5. int main()
  6. {
  7.     cin>>s;
  8.     x=0;
  9.     l=s.size();
  10.     for (i=0; i<=l-1; i++)
  11.     {
  12.         if (s[i]<='9') k=s[i]-'0';
  13.         else k=s[i]-'A'+10;
  14.         x=x*16+k;
  15.     }
  16.     cout<<x;
  17.     return 0;
  18. }
复制代码





作者: admin    时间: 2023-1-4 17:23
高手的进制转换(暂时不建议大家学)
1、十进制转十六进制,巧妙的利用了cout里面的hex格式,八进制可以使用oct
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int x;
  4. int main()
  5. {
  6.         cin>>x;
  7.         cout<<hex<<x;
  8.         return 0;
  9. }
复制代码

2、二进制有点特殊,没有oct和hex的表达方式,但是有个非常有意思的东西家叫做bitset
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int x;
  4. int main()
  5. {
  6.         cin>>x;
  7.         bitset<32> set(x); //定义一个32位的bitset,让它的值和x相等
  8.         cout<<set<<endl;
  9.         return 0;
  10. }
复制代码


3、十六进制转十进制,就干脆使用cin>>hex>>x,把x按十六进制读进来,然后输出
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int x;
  4. int main()
  5. {
  6.         cin>>hex>>x;
  7.         cout<<x<<endl;
  8.         return 0;
  9. }
复制代码

4、二进制转十进制的话也可以使用bitset读入二进制数
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.         bitset<16> x; //定义16位的bitset
  6.         cin>>x;//按2进制的形式读入
  7.         int y= x.to_ulong();//转成十进制数
  8.         cout<<y<<endl;
  9.         return 0;
  10. }
复制代码





欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2