`
huzhenyu
  • 浏览: 191859 次
  • 性别: 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表达式,如果需要进一步的匹配子判断式,则...

    整数划分问题 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。

    每个满足条件的表达式都称为\( n \)的一个划分。 #### 示例解释 以正整数6为例,它具有以下11种不同的划分方式: - 6 - 5 + 1 - 4 + 2 - 4 + 1 + 1 - 3 + 3 - 3 + 2 + 1 - 3 + 1 + 1 + 1 - 2 + 2 + 2 - 2 + 2 + 1 +...

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

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

    正则表达式

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

    正则表达式30分钟入门教程-附常用表达式.chm

    `, `{n}`, `{n,}` 和 `{n,m}` 分别表示零个或多个、一个或多个、零个或一个、精确n次、至少n次以及n到m次的匹配。 2. **字符类** - `[abc]`:匹配任何一个在方括号内的字符。 - `[^abc]`:匹配任何不在方括号内的...

    100个常用正则表达式

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

    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`**:用于检查字符串是否与某个模式相匹配。 ...

    数字信号处理-基于计算机的方法(第三版)答案.pdf

    解析:此题要求求解一个由单位脉冲函数构成的累加序列。 **答案解析**: - 当 \( n ) 时,\( k = 0 \) 不在累加范围内,因此 \( x[n] = 0 \); - 当 \( n \geq 0 \) 时,\( k = 0 \) 在累加范围内,因此 \( x[n] = ...

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

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

    asp常用正则表达式

    - **描述**:匹配单个数字,确保输入字段仅包含一个数字。 - **示例**:0, 1, 2, 3 2. **只能输入n个数字** - **表达式**:`^\d{n}$` - **描述**:匹配固定长度n的数字串,如`^\d{8}$`匹配8位数字。 - **示例*...

    正则表达式--常用的

    - 解析:这是一个较为复杂的正则表达式,用于验证电子邮件地址的格式是否正确。 - **匹配Internet URL**:`^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$` - 解析:该正则表达式用于验证以`http://`开头的Internet...

    常用正则表达式大全.txt

    根据提供的文件信息,我们可以整理出一系列与正则表达式相关的知识点。这些知识点涵盖了从基本的数字验证到复杂的字符串匹配等多个方面。下面是详细的知识点总结: ### 基本概念 正则表达式是一种用于文本模式匹配...

Global site tag (gtag.js) - Google Analytics