12进制转10进制再转2进制华中科技大学考研机试题

Posted Keith_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12进制转10进制再转2进制华中科技大学考研机试题相关的知识,希望对你有一定的参考价值。

12进制转10进制再转2进制

十二进制是数学中一种以 12为底数的计数系统,它由 0∼9,a,b组成,与十进制的对应关系是:0∼9对应 0∼9,a对应 10,b对应 11。

例如,十二进制的 a2,十进制是 122。

输入一个仅含十二进制数字的字符串(字母一律小写,不超过 8
个字符),完成下列任务:

输出该十二进制数每一位对应的十进制数(从高位到低位顺序输出,空格隔开);
实现“十二进制”转“十进制”算法,输出该十二进制数对应的十进制数;
输出转换后的十进制数在内存中的每个二进制位(共 4 字节,每字节之间空格隔开)。
输入格式

输入一个十二进制数(字母一律小写,不超过 8 个字符)。

输出格式

第一行输出该十二进制数每一位对应的十进制数(由高位到低位,以空格隔开)。

第二行输出该十二进制数对应的十进制数。

第三行输出转换后的十进制数在内存中的每个二进制位(共 4
个字节,每字节之间空格隔开)。

输入样例:

a2
输出样例:

10 2
122
00000000 00000000 00000000 01111010

代码

点击查看代码
#include<iostream>


using namespace std;

const char nl = \'\\n\';
const int N = 32;
int st[N];
int main()
    string s;
    cin >> s;
    int j;
    if(s[0] == \'-\')j = 1;	//注意可能是负数
    else j = 0;
    int ret = 0;
	//12进制转10进制(高进制转10进制)
    for(int i = j; i <= s.size() - 1; i ++ )
        ret *= 12;
        if(s[i] >= \'0\' && s[i] <= \'9\')
            ret += s[i] - \'0\';
            cout << s[i] - \'0\' << \' \';
        
        else
            ret += s[i] - \'a\' + 10;
            cout << s[i] - \'a\' + 10 << \' \';
        
    
    if(!j)cout << nl << ret << nl;
    else cout << nl << -ret << nl << \'-\';
	//10进制转2进制(10进制转低进制·)
    int top = 0;
    while(ret)
        st[++top] = ret & 1;
        ret >>= 1;
    
    int cnt = 0;
    int t = 32 - top;
    while(t --)
        cout << 0;
        cnt ++;
        if(cnt % 8 == 0)cout << \' \';
    
    while(top)
        cout << st[top --];
        cnt ++;
        if(cnt % 8 == 0)cout << \' \';
    

以上是关于12进制转10进制再转2进制华中科技大学考研机试题的主要内容,如果未能解决你的问题,请参考以下文章

无标题

学习日记计算机考研机试-简单模拟+进制转换

16进制与10进制怎么互相转换

考研机试题 -- 排序进位制日期

数字电路期末不挂科复习笔记

java蓝桥杯 试题-基础练习-十六进制转八进制