解释代码((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次方

这种问题一般在于考察分析和解决问题的能力。

时间: 2024-10-24 09:51:37

解释代码((n & (n-1))== 0)的含义的相关文章

9.5位操作(四)——解释代码(n&(n-1))==0的具体含义

题目:解释代码(n&(n-1))==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的最高有效位为1,其余位为0.因此,n的值是2的某次方. 所以,(n&(n-1))==0检查n是否为2的某次方(或者检查n是否为0 版权声明:本文为博主原创文章,未经博主允许不得转载.

js javascript:void(0) 真正含义

http://www.cnblogs.com/opper/archive/2009/01/12/1373971.html js javascript:void(0) 真正含义 我想使用过ajax的都常见这样的代码:<a href="javascript:doTest2();void(0);">here</a>但这儿的void(0)究竟是何含义呢?Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值.void 操作符用法格式如下:1

转:js中javascript:void(0) 真正含义

from:http://www.jb51.net/article/71532.htm 在Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. 我想使用过ajax的都常见这样的代码: 代码如下: <a href="javascript:doTest2();void(0);">here</a> 但这儿的void(0)究竟是何含义呢? void 操作符用法格式如下: 1. javascript:void (expression) 2.

JavaScript中 void(0) 的含义

JavaScript中 void (0)的含义 概述 void运算符执行传递给它的语句,然后返回undefined. 语法 void expression void 运算符通常仅仅被用来获取undefined的原始值,通常用void (0) (等同于void 0). 我们为什么不直接用undefined呢? undefined不是一个保留字(在JavaScript的某些环境中是个全局变量).这也就是说undefined是个可用的变量名,你可以给它任意赋值.例如: alert(undefined)

js中 javascript:void(0)的含义

void(0)用于执行某些处理,但是不整体刷新页面的情况下, javascript:void(0)表示不做任何动作.如: <a href="javascript:void(0);" onclick="alert('ok');"></a> 这里表示这个链接不做跳转动作,执行onClick事件. 我想使用过ajax的都常见这样的代码: <a href="javascript:doTest2();void(0);">

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记 这本书年初刷完,感觉不错,介绍了很多小点,都是平日不怎么关注的. 第1章 熟悉Objective-C 这章没什么好介绍 第1条:了解Objective-C语言的起源 第2条:在类的头文件中尽量少引入其他头文件 第3条:多用字面量语法,少用与之等价的方法 第4条:多用类型常量,少用#define预处理指令 要理解为啥要少用#define预处理指令. 然后具体用哪个, 自己定吧 第5条:用枚举表示状态.选项.状态

专心10年,写ASP.NET代码开始,从0到拥有5系

工作到现在,几乎就没离开过这里,写这篇文章也是给自己这10年做个总结,也希望能给选择了程序员这个职业的朋友,带来一些激励与感悟,写这文章又不想影响到自己的工作与生活,所以专门注册了一个马甲帐号请谅解,我也是园子的常客,有写过很多博文. 起点高低不会左右你的人生在这个职业里.我的同事与朋友里,好像我的起点还真是挺低的,高中辍学,妈妈看了我这样白上了10年学,到工地打工浪费了,拿出了家里仅有的5000元报了一个职业学校,学了一年的计算机技术,PHOTOSHOP,网页制作三剑客,还有后来ASP语言.在

javascript:void(0) 真正含义

大家常见这样的代码: <a href="javascript:doTest2();void(0);">here</a> 但这儿的void(0)究竟是何含义呢? Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. void 操作符用法格式如下: 1. javascript:void (expression) 2. javascript:void expression expression 是一个要计算的 Javascript 标

Linux中shell变量$0,$?等含义

linux中shell变量$#,[email protected],$0,$1,$2的基本含义: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 … $n"的形式输出所有参数. [email protected] 所有参数列表.如"