`
huzhenyu
  • 浏览: 193773 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

这个表达式你一眼看得出结论来吗?if ((n & -n) == n)

    博客分类:
  • JAVA
 
阅读更多
如题,很惭愧本人确实没有一眼看出来.首先定性思维第一反应把"&"理解成了"&&".java用了好几年了位运算却用得很少,习惯性的想到了更常用的与运算.后面当认识到这个错误时,用枚举的方式得出了一个结论原来是在找为2的n次方以及为0的数字.注:如果不是枚举,就拿int做二进制转换再做分析,得出这个结论可能还要多花些时间.当然如果有了结论反过来再验证被容易些.
这是群里朋友问的一个问题(本人好解决问题的),此题一出想了一秒就给了一个错误的结论.从中反思得出如下观点,希望自己以后自醒:
1.简单的问题最好实践后再给结论
2.想当然很多时候是一种病,我们程序员要引起重视的
3.基础的东西,什么时候去加强都不为过.
4.枚举,归纳法,这些小学数学就在接触的东西,到现还是很有用.
分享到:
评论
4 楼 antonia 2011-06-16  
Java学多了也会乱掉
3 楼 huzhenyu 2011-06-10  
superobin 写道
楼主的理解还不够严密,有点问题应。满足条件的数应该是
0 (n=0)
2^(n-1) (n>=1)

另外任何负数均不可能返回true,因为标识位 肯定一个是0一个是1,而楼主说的是绝对值为2的n次方



谢谢楼上指正,确实有误,已改正!
2 楼 huaihenu 2011-06-10  
位运算很考验人的思维
1 楼 superobin 2011-06-10  
楼主的理解还不够严密,有点问题应。满足条件的数应该是
0 (n=0)
2^(n-1) (n>=1)

另外任何负数均不可能返回true,因为标识位 肯定一个是0一个是1,而楼主说的是绝对值为2的n次方

相关推荐

    正则表达式实现excel判断(=IF(EXP,TRUE,FALSE))三元表达式(含各种嵌套复杂的判断表达式)分组提取内容

    14*G1,(((G2-G3)*13-1)*G1)), IF(G2,(10-(G3-G2)*2)*G1,11*G1))就不行了,因为有很多的逗号和其他符号干扰,所以研究了一个正则表达式解决了这个问题,可以是任意复杂的IF表达式,如果需要进一步的匹配子判断式,则...

    现在有一个简单游戏:表达式游戏

    本问题来源于一个简单的数学游戏,旨在通过在给定的一系列整数间插入不同的算术运算符(加、减、乘、除)来构造一个表达式,使得该表达式的计算结果最大,同时还需要满足一个额外的条件——最终结果不能包含某个特定...

    正则表达式

    一个字符类和它所包含的任何一个字符都匹配,所以正则表达式 / [abc] / 和字母 "a" , "b" , "c" 中的任何一个 都匹配.另外还可以定义否定字符类,这些类匹配的是除那些包含在中括号之内的字符外的所有字符.定义否定...

    100个常用正则表达式

    正则表达式(Regular Expression)是用于匹配字符串模式的一种语法,广泛应用于文本处理、数据验证、数据提取等领域。以下是对一些常见的正则表达式的详细解释: 1. 匹配中文字符:`[u4e00-u9fa5]` 这个正则表达式...

    正则表达式用法大全

    - **匹配空行的正则表达式**:使用 `\n[\s|]*\r` 来匹配空行。 - **匹配 HTML 标记的正则表达式**:使用 `<(.*)>.*|<(.*)\/>` 来匹配 HTML 标签。 - **匹配首尾空格的正则表达式**:使用 `(^\s*)|(\s*$)` 来去除字符...

    C语言程序设计-编写函数求表达式的和(n的值由主函数输入);1-12+13-14+......+1m

    C语言程序设计-编写函数求表达式的和(n的值由主函数输入);1-12+13-14+......+1m例如:当n=20时,表达式的值为0.668771;.c

    具有表达式的中缀表达式求值程序

    本文将详细介绍一个用于计算中缀表达式的程序,该程序通过一系列定义好的数据结构和算法来实现表达式的求值功能。中缀表达式是指操作符位于两个操作数之间的表达式形式,例如 `3 + 4` 或 `2 * (5 - 1)`。这种形式是...

    最全的UG方程曲线及详细表达式.doc

    通过上述UG表达式的详细介绍, 我们可以看到UG软件提供了一种强大的工具来精确控制曲线形状, 使得设计师能够更加准确地创建复杂的几何模型。无论是基础的直线、圆, 还是高级的双曲线、抛物线等, UG都能够通过数学方程...

    从中缀向后缀转换表达式

     中缀表达式就是我们通常所书写的数学表达式,后缀表达式也称为逆波兰表达式,在编译程序对我们书写的程序中的表达式进行语法检查时,往往就可以通过逆波兰表达式进行。我们所要设计并实现的程序就是将中缀表示的...

    正则表达式的N种技术

    `表示零个或一个,`{n}`表示恰好n个,`{n,}`表示至少n个,`{n,m}`表示n到m个。 2. **分组与引用** - **括号**:`(pattern)`用于创建一个分组,可以捕获匹配的子串并供后续使用,如`\1`引用第一个捕获组。 - **非...

    Python匿名函数(lambda表达式)

    原文地址 我的简单理解就是通过一行代码定义一个函数 ...通过lambda表达式定义一个函数 fun = lambda x, y: x+y if x<y else x-y print(fun(1,3)) # 4 lambda表达式与map函数结合方便的进行数据处理 map()

    php密码正式表达式

    - 至少包含一个英文字母。 - 至少包含一个数字。 - 至少包含一个特殊字符(如 # @ ! ~ % ^ & *)。 - 长度为8到20个字符。 #### PHP中的正则表达式函数 - **`preg_match`**:用于检查字符串是否与某个模式相匹配。 ...

    正则表达式教程 常用正则表达式

    ### 正则表达式教程:常用正则表达式解析 #### 一、正则表达式简介 正则表达式(Regular Expression)是一种强大的文本处理工具,它可以用来进行字符串的搜索、替换等操作。通过简单的字符组合,正则表达式可以灵活...

    java-正则表达式-正则表达式元素介绍

    在Java中,你可以使用`matches()`方法来检查一个字符串是否完全符合某个正则表达式模式,`split()`方法将字符串根据正则表达式分割成多个子字符串,以及`replaceAll()`方法替换字符串中符合正则表达式的部分。...

    自定义栈中缀表达式转换为后缀表达式并求值

    在计算机科学领域,将一个中缀表达式转换为后缀表达式是解决算术表达式求值问题的一种常用方法。通过这种方式可以避免括号带来的优先级问题,并简化计算过程。此案例主要涉及到了三种自定义类的设计:`stack`用于...

    JAVA正则表达式语法大全

    - 解释:匹配一个或多个数字,后跟零个或一个`.`,接着是零到两个数字。例如:`123`, `123.45`。 3. **匹配任意数量的数字**: - 表达式:`3ֻ֣"^[0-9]*$"` - 解释:匹配零个或多个数字。例如:``, `123`, `...

    正则表达式的方法,数字类型,字符类型,浮点类型,常用检验标准

    ### 正则表达式知识点详解 #### 一、正则表达式基础概念 正则表达式是一种用于匹配字符串中字符组合的工具,在编程语言中广泛应用于字符串搜索与替换任务。它能够帮助开发者快速准确地定位特定模式的文本,提高...

    正则表达式(日期校验)

    该示例展示了如何使用正则表达式来校验一个基本的日期格式(YYYY-MM-DD),并通过JavaScript的Date对象来进行进一步的校验,确保日期的真实有效性。 ```javascript function isDate(str) { // 正则表达式:YYYY-MM...

Global site tag (gtag.js) - Google Analytics