java如何判断一个正数是否是2的幂次? 只允许用一行代码实现(不能出现while或for循环) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if(n & (n-1) == 0) return true;else return false; Integer.toBinaryString(i).indexOf("1") == Integer .toBinaryString(i).lastIndexOf("1") return (n & (n-1) == 0) 呀 一行代码那就是 return (n & (n-1) == 0); Integer.toBinaryString(i).indexOf("1") == Integer.toBinaryString(i).lastIndexOf("1")与n & (n-1)其实思路都一样 只是实现方法不一样。 return Integer.toBinaryString(i).replaceAll("0", "").length() == 1;? return (num | (num - 1)) == (2*num - 1); 我一楼写的好像是错的 应该是 (num & (num-1)) == 0;那个少了括号貌似会报错 int & Boolean 非法吧,没IDE 谁试下去;THX 你用6试验一下就知道不对:110 | 101 = 111 110<<2 - 1 = 1011 关于6是我说错了,但是你这个算法有个缺陷,那就是当num很大的时候2*num会越界。不能保证对所有的int都适用,对吧? System.out.println(x%(x/2)==0);是这个么? 有兴趣可以去看看这个帖子:http://topic.csdn.net/u/20100325/17/eda330e1-1aa1-47b8-8691-15a504fa3c0d.html return (n & n-1) == 0 ? true : false; jdk 中 Random.nextInt()方法中提供的一种方法:return (n & -n) == n ? true : false; 正解,这个方法确实是j2se的API中提到的 Enumeration求助 做java练习题的网址 java运行程序后,界面为什么跳不出来呢 tomcat5.5中log4j.properties文件该放到那个目录下? 散分100 JPopupMenu的问题 eclipse小问题 swing或awt中的设置组件setsize方法的问题。奇怪啊 File & mkdir 线程的交替使用问题? 怎么用cookie实现购物车? 比较a,b大小 不用StringUtils下的方法和lang包下的类
else return false;
.toBinaryString(i).lastIndexOf("1")
那就是 return (n & (n-1) == 0);
.toBinaryString(i).lastIndexOf("1")
与
n & (n-1)
其实思路都一样 只是实现方法不一样。
那个少了括号貌似会报错 int & Boolean 非法吧,没IDE 谁试下去;THX
110 | 101 = 111
110<<2 - 1 = 1011
是这个么?
return (n & -n) == n ? true : false;
正解,这个方法确实是j2se的API中提到的