当前位置: 首页 > 学习知识 > (number != 0)&&((number&(number-1))==0)

(number != 0)&&((number&(number-1))==0)

网站编辑:上海建站网 发布时间:2022-05-17  点击数:
导读:(number != 0)&&((number&(number-1))==0) (number != 0)&&((number&(number-1))==0)这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数 九月霜降 1年前他留下的回答 已收到1个回答...

(number != 0)&&((number&(number-1))==0)

(number != 0)&&((number&(number-1))==0)
这是一个判断是否为2的幂的数,大神分析下,这个语句的运行思路?number为任意输入的整数
九月霜降 1年前他留下的回答 已收到1个回答

画出心中的彩虹 网友

该名网友总共回答了18个问题,此问答他的回答如下:采纳率:83.3%

(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的幂

1年前他留下的回答 追问

2

九月霜降

右边的那个运算能在解释清楚点么,就是这个地方有点糊,谢谢

画出心中的彩虹

首先2的幂的二进制数最高位是1,比如100000000000。不管number是不是2的幂,number一定可以写成1abcd的形式(abcd的取值为0或者1),number和number-1的与运算为0,那么number-1是高位必须是0,即是0efgh的形式。那么1abcd-1=0efgh说明什么呢?说明1abcd减1的时候一直在借位,也就是说abcd都是0,所以number就是10000,即2的幂

  以上就是小编为大家介绍的(number != 0)&&((number&(number-1))==0) 的全部内容,如果大家还对相关的内容感兴趣,请持续关注上海建站网!

  标签:
内容声明:网站所展示的内容均由第三方用户投稿提供,内容的真实性、准确性和合法性均由发布用户负责。上海建站网对此不承担任何相关连带责任。上海建站网遵循相关法律法规严格审核相关关内容,如您发现页面有任何违法或侵权信息,欢迎向网站举报并提供有效线索,我们将认真核查、及时处理。感谢您的参与和支持!
浏览此文的人还看过
如何使用百度站长平台
如何使用百度站长平台

详情:操作步骤/方法1百度站长平台还有搜索学院,讲解网站知识;论坛......

中国移动怎么查询话费余额
中国移动怎么查询话费余额

详情:操作步骤/方法1打开微信,搜索中国移动,关注公众号。2点击我......

10015是什么电话?
10015是什么电话?

详情:操作步骤/方法【方法1】1您好!10015是中国联通消费者权......

mp3怎么下载歌曲?
mp3怎么下载歌曲?

详情:操作步骤/方法1不用电脑为mp3下载歌曲的方法有:一如果MP......

相关网站