如果一個數是2^n,說明這個二進制里面只有一個1。除了1.
?
a??= (10000)b
a-1 = (01111)b
a&(a-1) = 0。
如果一個數不是2^n,
說明它的二進制里含有多一個1。
a = (1xxx100)b
a-1=(1xxx011)b
那么?a&(a-1)就是 (1xxx000)b,
而不會為0。
所以可以用這種方法判斷一個數是不2^n。
?
如果一個數是2^n,說明這個二進制里面只有一個1。除了1.
?
a??= (10000)b
a-1 = (01111)b
a&(a-1) = 0。
如果一個數不是2^n,
說明它的二進制里含有多一個1。
a = (1xxx100)b
a-1=(1xxx011)b
那么?a&(a-1)就是 (1xxx000)b,
而不會為0。
所以可以用這種方法判斷一個數是不2^n。
?
轉載于:https://www.cnblogs.com/lyggqm/p/5549589.html
本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。 如若轉載,請注明出處:http://www.pswp.cn/news/457842.shtml 繁體地址,請注明出處:http://hk.pswp.cn/news/457842.shtml 英文地址,請注明出處:http://en.pswp.cn/news/457842.shtml
如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!