LeetCode201—Bitwise AND of Numbers Range

旧城等待, 2022-07-13 07:09 122阅读 0赞

原题

原题链接

Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.

分析

比如说5的二进制是101,7的二进制是111,6的二进制是110,从5按位与到7,最后的结果是:
101 & 111 &110 = 100 也就是4.

按位运算一直不是我的强项,不过这题的规律可以参照:
http://www.cnblogs.com/grandyang/p/4431646.html

代码

  1. class Solution {
  2. public:
  3. int rangeBitwiseAnd(int m, int n) {
  4. int x=INT_MAX;
  5. for(;;)
  6. {
  7. if((m&x) ==(n&x))
  8. break;
  9. x=x<<1;
  10. }
  11. return m&x;
  12. }
  13. };

发表评论

表情:
评论列表 (有 0 条评论,122人围观)

还没有评论,来说两句吧...

相关阅读