关于 (a&(a-1))==0判断是否是2 的幂的疑问 有位高手是这么来做的,相信很多人都看到了尽管2的幂的确符合这个判断,但符合这个判断的一定是2的幂?谁能给出证明?比如0, (0&(-1))==0是true的,但显然不是2的幂 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 a是大于0的整数。若a是2的幂,易证a&(a-1)==0若n位2进制整数a>0,a不是2的幂 不妨设a=2^(n-1)+b。因为 a不是2的整数幂,所以b>=1。所以a-1=2^(n-1)+(b-1)。因为b-1>=0。所以a-1 的最高位为n位,于a的最高位相同,都是1。所以a&(a-1)=1*2^(n-1)+(b&(b-1))不为0。 你可以根据这个结论,再进一步推导负数是2的幂的条件:n<0((-n)&(-n-1))==0 关于在继承中当需要使用父类的属性时为什么需要在子类的构造器中使用? 在线紧急求帮助。。。救助啊!!!!POI的问题。。麻烦大家帮帮忙了! JAVA菜单显示不了? 得到前一条,后一条文章的SQL语句 applet中怎么导入其他包? 怎样用JAVA 语句编写对两个表同时操作? 怎么不用第三个变量实现a,b的值交换 各位大侠推荐本java的参考书吧 我想写一个下棋的程序 我在jbuilder中做了一个工程,可是怎么...(能给的分都给啦) 这样的正则表达式怎么写?? Java里有“抽象属性”吗?
若a是2的幂,易证a&(a-1)==0若n位2进制整数a>0,a不是2的幂
不妨设a=2^(n-1)+b。因为 a不是2的整数幂,所以b>=1。
所以a-1=2^(n-1)+(b-1)。因为b-1>=0。所以a-1 的最高位为n位,于a的最高位相同,都是1。
所以a&(a-1)=1*2^(n-1)+(b&(b-1))不为0。
n<0((-n)&(-n-1))==0