(number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/01 08:12:59
![(number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数](/uploads/image/z/7558801-25-1.jpg?t=%28number+%21%3D+0%29%26%26%28%28number%26%28number-1%29%29%3D%3D0%29%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA2%E7%9A%84%E5%B9%82%E7%9A%84%E6%95%B0%2C%E5%A4%A7%E7%A5%9E%E5%88%86%E6%9E%90%E4%B8%8B%2C%E8%BF%99%E4%B8%AA%E8%AF%AD%E5%8F%A5%E7%9A%84%E8%BF%90%E8%A1%8C%E6%80%9D%E8%B7%AF%3Fnumber%E4%B8%BA%E4%BB%BB%E6%84%8F%E8%BE%93%E5%85%A5%E7%9A%84%E6%95%B4%E6%95%B0)
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的幂