[CareerCup] 5.4 Explain Expression ((n & (n-1)) == 0) 解释表达式

简介:

5.4 Explain what the following code does: ((n & (n-1)) == 0).

这道题让我们解释一个表达式((n & (n-1)) == 0),是说一个数跟比它小1的数字按位相与,结果全是0的情况,那么说明两个数每个位置上至少都有一个0,那么最有可能的情况是连个数的各个位置的数是相反的,而且还要相差1,那么最后可能的情况是一个数的最高位是1,其余位都是0,则其减1即为向最高位借1,其余位均为1,例如: 二进数的10000和1111就相差1,且满足表达式。那么我们知道最高位是1,其余位都是0的二进数就是2的次数。

LeetCode上的原题,请参见我之前的博客Power of Two 判断2的次方数

本文转自博客园Grandyang的博客,原文链接:解释表达式[CareerCup] 5.4 Explain Expression ((n & (n-1)) == 0) ,如需转载请自行联系原博主。

相关文章
|
存储 编译器
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(下)
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(下)
282 0
|
存储 编译器
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(上)
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(上)
314 0
16.从入门到精通:range() 函数 break 和 continue 语句及循环中的 else 子句 break语句 continue语句 循环中的else子句 pass 语句
16.从入门到精通:range() 函数 break 和 continue 语句及循环中的 else 子句 break语句 continue语句 循环中的else子句 pass 语句
|
IDE Shell 开发工具
算数表达式-test测试语句-if流程控制语句 | 学习笔记
快速学习算数表达式-test测试语句-if流程控制语句。
算数表达式-test测试语句-if流程控制语句 | 学习笔记
|
Shell 开发工具 开发者
算数表达式-test 测试语句-if 流程控制语句 | 学习笔记
快速学习算数表达式-test 测试语句-if 流程控制语句
常用的xpath表达式
常用的xpath表达式
373 0
|
SQL 存储 缓存
根据运算符优先级解析SQL规则表达式
根据运算符优先级解析SQL规则表达式 目录 1.需求 2.知识准备 2.1 运算符优先级解析 2.2 流程分析 3.解决方案 3.1 思路1 3.2 思路2   正文 回到顶部 1.需求 测试数据库使用Greenplum,生产库使用GBase 普通表:存储客户数据,千万级别,结构如下 stat_date代表日期;user_id代表用户id;serial_number代表手机号;A_I72和A_I59是标签字段。
1591 0