码迷,mamicode.com
首页 > 其他好文 > 详细

Bitwise AND of Numbers Range

时间:2016-08-03 07:54:33      阅读:138      评论:0      收藏: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.

分析:http://www.cnblogs.com/grandyang/p/4431646.html

我们先从题目中给的例子来分析,[5, 7]里共有三个数字,分别写出它们的二进制为:

101  110  111

相与后的结果为100,仔细观察我们可以得出,最后的数是该数字范围内所有的数的左边共同的部分,如果上面那个例子不太明显,我们再来看一个范围[26, 30],它们的二进制如下:

11010  11011  11100  11101  11110

 1 public class Solution {
 2     int rangeBitwiseAnd(int m, int n) {
 3         int i = 0;
 4         while (m != n) {
 5             m >>= 1;
 6             n >>= 1;
 7             ++i;
 8         }
 9         return (m << i);
10     }
11 }

 

Bitwise AND of Numbers Range

标签:

原文地址:http://www.cnblogs.com/beiyeqingteng/p/5731396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!