(number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 17:50:03
(number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数

(number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数
(number != 0)&&((number&(number-1))==0)
这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数

(number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数
(number != 0)和((number&(number-1))==0)优先级是同等的.
先运算左边,如果number!=0为真,再运算右边;否则,结果直接为假,不计算右边(这个叫懒惰)
再看右边.首先需要知道2的幂和二进制的关系.2的幂就是2,4,8,16……二进制数为10, 100, 1000, 10000……
number和number-1进行与运算(对应位上同为1则结果为1),结果为0则是2的幂