(number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/01 11:46:32
xR[KA+"
j%D^nAB%\w-K̙wV%-,g;D0ur<8>%>ཷP<ļnP'vj&+xrZujԺ 8#bЃ1Ged'%:UG3F*5y=WH:MB]B^v^ y.*S)?3&>4n -E*xU@ׄL",~jUd`)ؗLsފMʒF)o=)
(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的幂