要求:
有一个 16 位的整数,每 4 位为一个数,写函数求他们的和。比如:
整数 1101010110110111(十进制为 54711),和 1101+0101+1011+0111(十进制为 36)
分析:
将16位整数存入到一个字符串,然后遍历每一位,每4位作为一组,将每组中'1'对应的十进制数值累加到总和中。
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
char a[17];
int sum = 0;
cin >> a;
for (int i = 0; a[i] != '\0'; i++) {
if (a[i] == '1') // 如果当前位是置位
sum += static_cast<int>(pow(2, 3 - i % 4)); // 利用i与幂的关系
}
cout << sum << endl;
return 0;
}