AcWing 3616. 华中科技大学考研机试题 进制转换
原题链接
简单
作者:
xianhai
,
2021-12-06 09:34:55
,
所有人可见
,
阅读 308
利用位运算输出二进制串
#include <cstdio>
#include <cstring>
char a[10];
int main() {
scanf("%s", a);
int n = strlen(a);
int sum = 0, d;
// 输出第一行,并计算出对应的十进制数
for (int i = 0; i < n; i++) {
if (a[i] >= '0' && a[i] <= '9') {
d = a[i] - '0';
} else if (a[i] >= 'a' && a[i] <= 'b') {
d = a[i] - 'a' + 10;
}
sum = sum * 12 + d;
printf("%d ", d);
}
printf("\n");
// 输出第二行
printf("%d\n", sum);
// 输出第三行
for (int i = 31; i >= 0; i--) {
if (i != 31 && (i + 1) % 8 == 0) {
printf(" ");
}
if ((sum & (1 << i)) == 0) {
printf("0");
} else {
printf("1");
}
}
return 0;
}