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进制华中科技大学考研机试题的主要内容,如果未能解决你的问题,请参考以下文章