計算 1 個 Word 裡有幾個 On 的 Bit

Brian Kernighan 演算法

Yu
Oct 30, 2023

Brian Kernighan 演算法

將十進制數字減去 1 之後,可以發現在二進制的表示中,最低有效位(最右邊的 1)翻轉為 0,並將此位之後的所有位元全部翻轉,由 1 變 0、0 變 1。

因此透過上述的原理,我們可以在迴圈中不斷執行 n AND (n-1),並計算 n 不等於 0 的執行次數,就可以得到 On Bit 的數量。

這段程式碼的目的是使用 Brian Kernighan 的位元計數演算法。計算 32 位元整數 IN_DINT 中 On Bit 的數量,並將結果存儲在 QTY 變數中。

AOI 變數
AOI 程式
AOI 應用在 LD

參考資料

  1. Count set bits in an integer
  2. Brian Kernighan’s Algorithm to count set bits in an integer

--

--

No responses yet