文档章节

解释代码(n&(n-1))==0的具体含义

一贱书生
 一贱书生
发布于 2016/11/18 15:23
字数 311
阅读 47
收藏 0

1)(A&B)==0的含义

 

A和B的二进制表示的同一位置绝不会同为1。

 

2)n和n-1

若n的最低有效位为1,减去1后为0,其余为均相同,不符合要求。n的最低有效位为0,减去1时,必须向高位借1。

 

3)(n&(n-1))==0的含义

假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面我们来看更多的例子:

5 & 4 = 101 & 100 = 4
 6 & 5 = 110 & 101 = 4
 7 & 6 = 111 & 110 = 6
 8 & 7 = 1000 & 0111 = 0

我们会发现要使表达式等于0,n-1必须使得n的n-1都向高位进1,也就是说满足一下条件:

x + 1 = n
 x & n = 0

我们来看看有那些数能满足要求:

10 & 01 = 0   -------2^1
100 & 011 = 0  -------2^2
1000 & 0111 = 0  -------2^3
10000 & 01111 = 0  -------2^4
。。。。。。

所谓代码((n & (n-1))== 0)的含义是n满足2的n次方

n的最高有效位为1,其余位为0。因此,n的值是2的某次方。

所以,(n&(n-1))==0检查n是否为2的某次方(或者检查n是否为0

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 724
码字总数 600123
作品 0
私信 提问
linux的shell变量之传参

linux中shell变量$#,$@,$0,$1,$2的含义解释 摘抄自:ABS_GUIDE 示例: 其中s@与s*区别: $* 与 $@ 区别: 相同点:都是引用所有参数。 不同点:只有在双引号中体现出来。假设在脚本运行时写了...

ziwenzhou
2017/05/07
0
0
解释代码((n & (n-1))== 0)的含义

思路: 初步查看很难一眼分析出表达式是什么含义,我们不妨举例分析一下,假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面我们来看...

borey
2014/09/11
0
0
Linuxl中shell变量$#、$@、$0、$1、$2的含义解释

、$@、$0、$1、$2的含义解释 :Shell本身的PID(ProcessID)。 :Shell最后运行的后台Process的PID。 :最后运行的命令的结束代码(返回值)。 :使用Set命令设定的Flag一览。 :所有参数列表...

SharkYu
02/28
0
0
我来理解for循环

简单示例 先看一段简单的代码: 这段代码的含义是什么?求和:sum = 1 + 2 + 3 + .. + n,当前n为5。 这段代码是怎么执行呢? 声明sum,,并赋值0。(int sum = 0) 声明n,赋值为5。(int n...

艳沐石
2016/12/28
17
0
Linux基础教程 linux下使用find命令根据系统时间查找文件用法

   Linux基础教程 linux下使用find命令根据系统时间查找文件用法 LinuxFind 兄弟连 小编总结这些时间戳包括   复制代码代码如下:   mtime 文件内容上次修改时间   atime 文件被读取...

疯狂的小黑
2016/11/08
4
0

没有更多内容

加载失败,请刷新页面

加载更多

Flink-数据流编程模型

1、抽象等级 Flink提供了不同级别的抽象来开发流/批处理应用程序。 1) 低层级的抽象 最低层次的抽象仅仅提供有状态流。它通过Process函数嵌入到DataStream API中。它允许用户自由地处理来自一...

liwei2000
25分钟前
1
0
Java开发Swing实战JFrame和JTabbedPane容器的用法详细解析

概述: 项目是一个桌面程序,涉及标签和按钮组件、布局管理器组件、面板组件、列表框和下拉框组件等组件,以及Swing事件处理机制。 下面先从最基础的界面开始。 /** * @author: lishuai * @...

金铭鼎IT教育
30分钟前
9
0
flask 之旅

环境 为了正确地跑起来,你的应用需要依赖许多不同的软件。 就算是再怎么否认这一点的人,也无法否认至少需要依赖Flask本身。 你的应用的运行环境,在当你想要让它跑起来时,是至关重要的。 ...

hblt-j
31分钟前
6
0
easyui的上传文件

记录一下自己亲手操刀easyui的心得:不用不知道,一用就问题多,网上查资料,有用的真的太少了 ——————————————————正文 FileBox,还是不错的讲真,至少我去自己写就gaga了...

anlve
32分钟前
4
0
如何做好SQLite 使用质量检测,让事故消灭在摇篮里

本文由云+社区发表 SQLite 在移动端开发中广泛使用,其使用质量直接影响到产品的体验。 常见的 SQLite 质量监控一般都是依赖上线后反馈的机制,比如耗时监控或者用户反馈。这种方式问题是: ...

腾讯云加社区
34分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部