zoukankan      html  css  js  c++  java
  • 进制之间的转换的问题

    基本思路 16转化8进制  需要先转化成二进制形式  

    1个16进制可以转化成4个二进制 

    3个二进制可以转化成一个八进制

    具体方法:(1)定义2个字符串

    ()把16进制的数输入到其中一个字符串中去

    ()把16进制字符串中的每一个数分情况讨论 比如1为0001

    ()把s2中的字符每算一次就加一次

    ()把s2的每三个转化成一个八进制的数字

    注意点:字符串中S2+="0011"就可以表述在S2 后面加上一个0011的字符

                 字符串中把每一个字符数字减去'0‘就表示成int’型的数字

    2下面是一个16进制转化成10进制的操作

    把16进制展开 每次计算的时候就*16加上当前的值

     注释掉的是一个错误的答案,因为把位数搞反了 把第一位当成最后一位 16的0次方进行计算了。

     1 #include <iostream>
     2 #include <string>
     3 #include <cmath>
     4 using namespace std;
     5 int main()
     6 {
     7     string s;
     8     long long  b=0;
     9     int c;
    10     cin>>s;
    11     for(int i=0;i<s.size();i++)
    12     {
    13         c=s[i]-'0';
    14     /*    if(c<10)
    15         {
    16           // b=b+c*pow(16,i);
    17           b=b*16+c;
    18          } 
    19          else
    20          {
    21              c=c-7;
    22          /*    b=b+c*pow(16,i);
    23          b=b*16+
    24          }*/
    25          if(c>=10)
    26          {
    27              c=c-7;
    28          }
    29          b=b*16+c;
    30     }
    31     cout<<b;
    32     return 0;
    33  } 

    3.十进制转化成十六进制

    这道题中的问题:主要是输入的时候的问题   long long 的用lld进行输入

    #include <cmath>
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
      long long a;
      int y[100];
      int i=0;
      scanf("%lld",&a);
      if(a==0)
      cout<<a;
      else{
           while(a)
      {
              y[i]=a%16;
              //cout<<y[i]<<endl;
              i++;
           a=a/16;
          //cout<<a<<endl;
          
      }
     
      for(int j=i-1;j>=0;j--)
       {
       //    cout<<y[j]<<endl;
           if(y[j]<10)
           {   cout<<y[j];continue;
           }
        
        else if(y[j]==10)
        {
            cout<<'A';continue;    
        }
    
        else if(y[j]==11)
        {
        cout<<'B';continue;    
        }
        
        else if(y[j]==12)
        {
                cout<<'C';continue;
        }
    
        else if(y[j]==13)
        {
            cout<<'D';continue;    
        }
    
        else if(y[j]==14)
        {
                cout<<'E';continue;
        }
    
        else 
        cout<<'F'; 
    }
      } 
     
      return 0;
    }

     4.十进制转化成八进制

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int n;
     6     int a[100];
     7     int i=0;
     8     cin>>n;
     9     while(n)
    10     {
    11         a[i]=n%8;
    12         n=n/8;
    13         i++;
    14     }    
    15   for(int j=i-1;j>=0;j--)
    16   {
    17         cout<<a[j];    
    18   }
    19     
    20     return 0;
    21 }
    这种计算十进制转化成其他进制的数就是把% / 后面的数对应成相应的数字就可以
    

      

  • 相关阅读:
    Btrace入门到熟练小工完全指南
    mysqldump常用于MySQL数据库逻辑备份
    thrift总结
    十大技巧优化Android App性能
    Google 发布 Android 性能优化典范
    Android性能优化之一:ViewStub
    Android实战技巧:ViewStub的应用
    安装andriod studio时出现Internal error. Please report to https://code.google.com/p/an
    Android Service的生命周期
    Android 70道面试题汇总不再愁面试
  • 原文地址:https://www.cnblogs.com/jweie/p/8350111.html
Copyright © 2011-2022 走看看