zoukankan      html  css  js  c++  java
  • 十二进制的处理

    hust上机题

    题目描述:

    输入一个仅含有十二进制数字的字符串(字母一律小写,不超过八个字符)

    完成以下任务

    1、输出该十二进制数每一位对应的十进制数(从高位到低位顺序输出,空格隔开);

    2、实现十二进制转十进制的算法,输出该是二进制数对应的十进制数

    3、输出转换后的十进制数在内存中的每个二进制位。

    思想:

    1、对于每个字符逐个进行分析

    2、从低位往高位算(注意,数据存储的时候高位反而存的事低位的数,下标要先挪到数组最高位再倒着计算),对于每个字符先转为十进制数,再乘以12的对应权值幂次方;累加即可

    3、对于2的结果,先建立一个32位的数组,初始化数组为0,下标挪到数组最高位倒着一边余2一边保存余数到数组中。注意当停止/2操作时还有一个余数,也要一并保存数组当中。

    代码实现:

     1 #include<iostream>
     2 #include<cmath>
     3 using namespace std;
     4 int dozenchartodecem(char c)
     5 {
     6     int result=-1;
     7     if(c>'0'&&c<='9')
     8         {
     9             result =c-'0';
    10         }
    11         else if(c=='a')
    12         {
    13             result =10;
    14         }
    15         else if(c=='b') result=11;
    16         return result;
    17 }
    18 
    19 int main()
    20 {
    21     char num[100];
    22     cout<<"请输入十二进制数"<<endl;
    23     cin>>num;
    24 
    25     //把十二进制数改十进制
    26     int result=-1,i=0;
    27     int sum=0,weight=0;
    28     while(num[i]!='')
    29     {
    30         cout<<dozenchartodecem(num[i])<<" ";
    31         i++;
    32     }
    33     i=0;
    34     while(num[i]!='')i++;//由于计算要从低位到高位计算,要把i移到字符串末尾
    35     i--;//i回退一位
    36     while(i>=0){//逐位进行计算
    37             sum=sum+dozenchartodecem(num[i])*pow(12,weight);
    38         weight++;
    39         i--;
    40     }
    41     cout<<endl;
    42     cout<<sum<<endl;
    43     //十进制数在内存中的每个二进制位
    44 
    45     int bin[32];
    46 
    47     for(i=0;i<32;i++)
    48         bin[i]=0;
    49     i=31;
    50     while(sum/2!=0){
    51         bin[i]=sum%2;
    52         sum/=2;
    53         i--;
    54     }
    55     //还剩最后一个余数要处理***
    56     bin[i]=sum;
    57     for(i=0;i<32;i++)
    58     {
    59         cout<<bin[i];
    60         if((i+1)%8==0){
    61             cout<<' ';
    62         }
    63     }
    64     cout<<endl;
    65 
    66     return 0;
    67 }
  • 相关阅读:
    使用匿名内部类的创建形式完成线程的2种方式
    线程的2种创建方式
    深入学习 viewport 和 px
    <script> 标签位置应该放在哪里?
    JavaScript 创建对象的几种方式?
    Palindrome Number
    String To Integer
    Reverse Integer
    Zigzag Conversion
    Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/AKsnoopy/p/10415703.html
Copyright © 2011-2022 走看看