如果实现进制转换
编写函数实现给定一个长度为16的"0","1"序列和一个正整数n,输出二进制序列循环左移n位后所表示的10进制数,不考虑符号位。禁止使用C++自带的二进制串转化为数字的函数。测试样例保证n<100,n>=0。
【输入形式】从标准输入输入二进制串和正整数n,空格隔开
【输出形式】二进制串循环左移n位后所表示的10进制数
【样例输入】0000111100001111 2
【样例输出】15420
【样例说明】循环左移2位后的二进制串为0011110000111100 #include <stdio.h>
#include <stdint.h>
int main(void) {
uint32_t number = 0;
for(size_t i = 0; i < 16; ++i) {
number = (number << 1) | (getchar() - '0');
}
size_t count; scanf("%lu", &count);
for(size_t i = 0; i < count; ++i) {
number = (number << 1) | (0x80000000 & number ? 1 : 0);
}
printf("%u\n", number);
return 0;
}
#include <stdio.h>
int main(){
char s;
int n, res = 0;
for(int i = 0; i < 16; i++) scanf("%c", &s);
scanf("%d", &n);
for(int i = 15; i >= 0; i--) if(s == '1') res += (2<<(15-i));
printf("%d", res << n-1);
return 0;
}0000111100001111 2
15420
页:
[1]