博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201. Bitwise AND of Numbers Range
阅读量:7282 次
发布时间:2019-06-30

本文共 796 字,大约阅读时间需要 2 分钟。

一、题目

  1、审题

  

  2、分析

    求 n~m 范围内的所有数字进行二进制 & 运算后的结果。

 

二、解答

  1、思路:

    方法一、

    以 26~30 为例,二级制 & 运算,若出现了一个 0 则结果为 0。在这个例子中,结果为 11000,因此我们要减去后边部分不同的部分。这里后边有 3 个不同。

    

public int rangeBitwiseAnd2(int m, int n) {        int i = 0; // i means we have how many bits are 0 on the right        while(m != n){            m >>= 1;            n >>= 1;            i++;            }        return m << i;          }

 

  方法二、

    直接统计 m、n 共同前缀。后边部分置为 0。

public int rangeBitwiseAnd(int m, int n) {        return (n > m) ? (rangeBitwiseAnd(m >> 1, n >> 1) << 1) : m;    }

 

  方法三、

    每次将 n 的最右边的 1 化为 0,直到 m >= n,则 n 即为 答案。

public int rangeBitwiseAnd3(int m, int n) {        while(m < n)            n = n & (n - 1); // 每次将 n 最右边一个 1 去除        return n;    }

 

转载于:https://www.cnblogs.com/skillking/p/9818584.html

你可能感兴趣的文章
session,application,cookie,viewstate,Querystring等的作用域
查看>>
【LoadRunner】OSGI性能测试实例
查看>>
Windows phone 应用开发系列教程(更新中)
查看>>
Elasticsearch之sense插件安装之后的浏览详解
查看>>
CSS布局口诀 - CSS BUG顺口溜
查看>>
加强IIS安全机制 建立高安全性能Web服务器
查看>>
页面大小和页表项之间有必然的联系么?【转】
查看>>
iOS:Xcode中SVN不能提交CocoaPods中的.a文件的解决方法
查看>>
[ACM_模拟] ZJUT 1155 爱乐大街的门牌号 (规律 长为n的含k个逆序数的最小字典序)...
查看>>
采用dlopen、dlsym、dlclose加载动态链接库【转】
查看>>
iOS:抽屉侧滑动画两种形式(1、UIView侧滑 2、ViewController侧滑)
查看>>
[游戏模版13] Win32 透明贴图 主角移动
查看>>
保护SQL语句不被Sql Profiler / 事件探查器 捕获跟踪到<转>
查看>>
1.7. Synthesizer
查看>>
GIT和SVN比较
查看>>
javascript:getElementsByName td name
查看>>
隐马尔可夫模型(一)——马尔可夫模型
查看>>
ECharts简单入门
查看>>
QComboBox 和 QSpinBox 使用方法
查看>>
shell编程——循环执行
查看>>