请你作为数学专家和计算机专家回答以下问题:1.从编程角度分析,如何尽可能简单地得到二进制数 n 除以二进制数 m 的二进制余数,请尽可能清楚地描述其逻辑。 2.请给出用c++语言编写的针对第一个问题的代码
时间: 2023-11-27 16:54:28 浏览: 47
给“余”猜数,由用户事先想好一个大于0的正整数x,将它分别除以某几个正整数得到余数,将这几个数与余数一并告诉计算机,计算机能马上猜出满足条件的最小正整数,如果条件矛盾,输出无解。
4星 · 用户满意度95%
1. 二进制数 n 除以二进制数 m 的二进制余数,可以通过模2运算实现。具体来说,我们可以将n和m转化为十进制数,然后将十进制数进行模2运算,得到的余数再转化为二进制数即可。
2. 下面是用c++语言编写的针对第一个问题的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n, m, r;
cout << "请输入二进制数n:";
cin >> n;
cout << "请输入二进制数m:";
cin >> m;
int dec_n = 0, dec_m = 0; // 将二进制转化为十进制
int base = 1;
while (n > 0) {
int d = n % 10;
dec_n += d * base;
base *= 2;
n /= 10;
}
base = 1;
while (m > 0) {
int d = m % 10;
dec_m += d * base;
base *= 2;
m /= 10;
}
r = dec_n % dec_m; // 计算余数
cout << "二进制数n除以二进制数m的二进制余数为:";
int bin_r = 0, i = 0; // 将余数转化为二进制
while (r > 0) {
bin_r += (r % 2) * pow(10, i);
r /= 2;
i++;
}
cout << bin_r << endl;
return 0;
}
```
阅读全文