社区
Java SE
帖子详情
请高手来解释一下
java_zhengjd
2010-04-12 09:33:40
if(n & (n-1) == 0) return true;
else return false;
这是在判断一个数是否为2的幂次,请高手来具体解释一下,具体的运算过程。
...全文
100
8
打赏
收藏
请高手来解释一下
if(n & (n-1) == 0) return true; else return false; 这是在判断一个数是否为2的幂次,请高手来具体解释一下,具体的运算过程。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vlemfun
2010-04-12
打赏
举报
回复
学习了
都是高手啊
jacky花园
2010-04-12
打赏
举报
回复
[Quote=引用 2 楼 keeya0416 的回复:]
引用楼主 java_zhengjd 的回复:
if(n & (n-1) == 0) return true;
else return false;
这是在判断一个数是否为2的幂次,请高手来具体解释一下,具体的运算过程。
如果一个数是2的幂,那么它的2进制里只有一位是1 其他都是 0
那么该数减1 后 它的2进制中是1 的那一位变成了0 后边的 0 都是1 了
故有 ……
[/Quote]
up
keeya0416
2010-04-12
打赏
举报
回复
结贴是个好习惯。。。。
哈哈
java_zhengjd
2010-04-12
打赏
举报
回复
谢谢了,终于弄清楚了这个东东,以后还愿各位不吝赐教。
keeya0416
2010-04-12
打赏
举报
回复
如果一个数是2的幂,那么它的2进制里只有一位是1 其他都是 0
那么该数减1 后 它的2进制中是1 的那一位变成了0 后边的 0 都是1 了
故有 (n & (n-1)) == 0;
相反 如果一个数不少2 的幂 ,那么它的的2进制里就会有多位是1
那么该数减1后 只是最后的那个1边成0,该1后的0变成1。
而该数前边的1都是不会变的
也即 (n & (n-1)) > 0;
keeya0416
2010-04-12
打赏
举报
回复
n & (n-1) == 0;是错的
要写成 (n & (n-1)) == 0;
keeya0416
2010-04-12
打赏
举报
回复
[Quote=引用楼主 java_zhengjd 的回复:]
if(n & (n-1) == 0) return true;
else return false;
这是在判断一个数是否为2的幂次,请高手来具体解释一下,具体的运算过程。
[/Quote]
如果一个数是2的幂,那么它的2进制里只有一位是1 其他都是 0
那么该数减1 后 它的2进制中是1 的那一位变成了0 后边的 0 都是1 了
故有 n & (n-1) == 0;
soooooga
2010-04-12
打赏
举报
回复
&是按位运算符
参与运算的两个值,如果两个相应的位都为1,则该位的结果为1,否则为0,即:
0&0 = 0 ;0&1=0 ;1&0=0;1&1=1;
例如:0010 1010 & 0001 0111 = 0000 0010
请
教
高手
>
解释一下
JAVA中的代理
JAVA中的代理实在看不懂啊那位
高手
帮个忙!!
解释一下
高手
解释一下
:python两个模块的交叉编译
print ('i am test from import',__name__) from from_import import * m = title print ('test from import',m) title ='hhh' print ('test from import',title) test_from_import.py
python从菜鸟到
高手
pdf 百度云_《Python从菜鸟到
高手
》PDF高清完整版-PDF下载
论文格式:16 k:胶版纸包装:Paperback-Perfect绑定设置:没有ISBN: 9787302507161简介······这本书系统地解释了核心知识的Python,使用Python Web开发,数据分析,和各种开发实践领域的Web爬虫程序和桌面应用程序。这本书使用超过50000行代码和大量的实际案例来完全解释Python在各领域的杰出的表现。每个案例都有详细的实施步骤,主要读者掌握Py...
编译器和解释器的区别与联系
菜鸟经常将编译器和解释器弄混淆,无奈之下,于是向
高手
请
教。
高手
说: “ 解释器是一条一条的解释执行源语言。比如php,postscritp,javascript就是典型的解释性语言。 编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(exe程序),在window
java定义长方体类cuboid_java有一题执行结果不对,但是我不知道错在哪里了,求
高手
认真解释,谢谢!执行结果始终为0.题目:定义一个名为Cuboid的长方体类,使其继承Rectangle类,其...
java有一题执行结果不对,但是我不知道错在哪里了,求
高手
认真解释,谢谢!执行结果始终为0.题目:定义一个名为Cuboid的长方体类,使其继承Rectangle类,其中包含一个表示高度的double型成员变量heig2016-12-09java有一题执行结果不对,但是我不知道错在哪里了,求
高手
认真解释,谢谢!执行结果始终为0.题目:定义一个名为Cuboid的长方体类,使其继承Rectangle类,...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章