通过Leetcode::Bitwise AND of Numbers Range 深化对比特位计算的理解
2015-05-03 14:17
477 查看
无聊写了一道leetcode,后来翻看discussion发现了一个网友用了一个比较巧妙的方法解题,有助于理解比特位计算的一个特性。
先上代码,后面解析:
题目是:
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.
先上代码,后面解析:
题目是:
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.
// 我的解法 int rangeBitwiseAnd(int m, int n) { if (m == n) return m; int d = n - m; int res = 0; for (int i = 1; res < m; i <<= 1) { if (d < i) { res |= i; } if (i == 0x40000000) break; } return res & m & n; }
// 网友的解法 int rangeBitwiseAnd(int m, int n) { int msb=0; int t = m ^ n; while (t >>= 1) msb++; unsigned int mask = ~((1 << msb) -1); return m & mask; }
相关文章推荐
- [leetcode] Bitwise AND of Numbers Range
- LeetCode--Bitwise AND of Numbers Range
- leetcode 201: Bitwise AND of Numbers Range
- LeetCode201 Bitwise AND of Numbers Range
- Leetcode Bitwise AND of Numbers Range
- LeetCode Bitwise AND of Numbers Range
- Bitwise AND of Numbers Range -- leetcode
- leetcode_Bitwise AND of Numbers Range
- 【Leetcode】Bitwise AND of Numbers Range
- leetcode--Bitwise AND of Numbers Range
- Leetcode -- Bitwise AND of Numbers Range
- [leetcode] Bitwise AND of Numbers Range
- 【leetcode】 Bitwise AND of Numbers Range
- LeetCode 201 Bitwise AND of Numbers Range (位运算)
- leetcode Bitwise AND of Numbers Range
- leetcode之Bitwise AND of Numbers Range
- *LeetCode-Bitwise AND of Numbers Range
- leetcode-201 Bitwise AND of Numbers Range
- leetcode:Bitwise AND of Numbers Range
- LeetCode Bitwise AND of Numbers Range