基本算法_位運算_lowbit

lowbit運算

lowbit(n)定義爲非負整數n在二進制表示下“最低位的1及後面的所有0”構成的數值。比如二進制10011111010的lowbit就是最後兩位10。

那麼我們如何得到lowbit的值呢?

首先:取反。

 ~ 10011111010

 = 01100000101

然後:+1

   01100000101+1

= 01100000110

我們會發現,此時只有lowbit與原二進制相同,此時再與原數字相與即可得到lowbit(n)

綜上可得lowbit的運算公式

  lowbit(n) = n & ( ~ n + 1 ) 

又在補碼中,~n+1= - n,所以

  lowbit(n) = n & (- n)

那lowbit有什麼應用呢?我們可以求得一個數字二進制中所有1的個數,從而得到0的個數……

只需要不斷把n的值賦爲n-lowbit( n )即可~

 

發佈了41 篇原創文章 · 獲贊 6 · 訪問量 3524
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章