[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) ,如需转载请自行联系原博主。

相关文章
|
1天前
a+=b 和 a=a+b 真的完全等价吗?
a+=b 和 a=a+b 真的完全等价吗?
5 0
|
13天前
|
SQL Oracle 关系型数据库
CASE WHEN 语句的语法及示例,LeetCode 题目 “确认率” 练习
本文介绍了SQL中CASE语句的两种形式和语法,并通过LeetCode题目“确认率”的SQL查询示例展示了CASE语句在实际问题中的应用,解释了如何使用CASE语句计算特定条件的比率。
|
C语言
笔记||if 语句
笔记||if 语句
60 0
|
存储 编译器
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(上)
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(上)
291 0
|
存储 编译器
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(下)
一次带你理清 ‘ || ’ 和 ‘ && ’ 和 ‘ ^ ’ 等常用操作符以及其余基本操作符(下)
270 0
16.从入门到精通:range() 函数 break 和 continue 语句及循环中的 else 子句 break语句 continue语句 循环中的else子句 pass 语句
16.从入门到精通:range() 函数 break 和 continue 语句及循环中的 else 子句 break语句 continue语句 循环中的else子句 pass 语句
|
关系型数据库 MySQL 数据库
MySql常用函数(逻辑判断,字符串处理,日期函数)FIND_IN_SET、IF、ISNULL、IFNULL、NULLIF、SUBSTR、SUBSTRING_INDEX、CONCAT、LENGTH
MySql常用函数(逻辑判断,字符串处理,日期函数)FIND_IN_SET、IF、ISNULL、IFNULL、NULLIF、SUBSTR、SUBSTRING_INDEX、CONCAT、LENGTH
MySql常用函数(逻辑判断,字符串处理,日期函数)FIND_IN_SET、IF、ISNULL、IFNULL、NULLIF、SUBSTR、SUBSTRING_INDEX、CONCAT、LENGTH
|
物联网 Linux 开发者
练习 expr 思路|学习笔记
快速学习练习 expr 思路
练习 expr 思路|学习笔记
|
SQL Oracle 关系型数据库
软件测试mysql面试题:NVL函数,IFNULL函数和ISNULL函数有什么区别?
软件测试mysql面试题:NVL函数,IFNULL函数和ISNULL函数有什么区别?
189 0