判斷一個數字的二進制形式是不是01交替的。
如5=101,返回True
如7=111,返回False
leetcode、這道題可以用位運算來實現。看到01交替,就想到移位運算。如果n是01交替的,移位之后進行異或,則得到的數字x各個位都是1。也就是x=n^(n>>1)
剩下的任務就是判斷一個數字是否是2的冪減一。也就是((x+1)&x)==0
判斷一個數字的二進制形式是不是01交替的。
如5=101,返回True
如7=111,返回False
leetcode、這道題可以用位運算來實現。看到01交替,就想到移位運算。如果n是01交替的,移位之后進行異或,則得到的數字x各個位都是1。也就是x=n^(n>>1)
剩下的任務就是判斷一個數字是否是2的冪減一。也就是((x+1)&x)==0
轉載于:https://www.cnblogs.com/weiyinfu/p/7637414.html
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态