C++ 中数字范围的按位 AND
假设我们有一个范围 [m, n],其中 0 <= m <= n <= 2147483647。我们必须找出此范围内所有数字的按位 AND,包括范围本身。因此,如果范围是 [5, 7],则结果将为 4。
为了解决此问题,我们将按照以下步骤进行 -
i := 0
当 m 不等于 n 时,
m := m/2,n := n / 2,将 i 增加 1
左移 i 次后返回 m。
示例 (C++)
让我们看看以下实现以获得更好的理解 -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int i = 0;
while(m != n){
m >>= 1;
n >>= 1;
i++;
}
return m << i;
}
};
main(){
Solution ob;
cout << (ob.rangeBitwiseAnd(5,7));
}输入
5 7
输出
4
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP