C++ 程式快速查詢一個數的奇偶校驗


在本文中,我們將討論一個程式,查詢給定數字 N 的奇偶校驗。

奇偶校驗定義為一個數的二進位制表示中設定的位(‘1’的個數)。

如果二進位制表示中的‘1’的個數為偶數,則奇偶校驗稱為偶數,如果二進位制表示中的‘1’的個數為奇數,則奇偶校驗稱為奇數。

如果給定的數是 N,我們可以執行以下操作。

  • y = N ^ (N >> 1)
  • y = y ^ (y >> 2)
  • y = y ^ (y >> 4)
  • y = y ^ (y >> 8)
  • y = y ^ (y >> 16)

一旦所有這些操作都完成,y 中最右邊的位將表示該數的奇偶校驗。如果該位為 1,則奇偶校驗為奇數,如果該位為 0,則奇偶校驗為偶數。

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
bool calc_parity(int N) {
   int y;
   y= N ^ (N >> 1);
   y = y ^ (y >> 2);
   y = y ^ (y >> 4);
   y = y ^ (y >> 8);
   y = y ^ (y >> 16);
   //checking the rightmost bit
   if (y & 1)
      return 1;
   return 0;
}
int main() {
   int n=1345;
   int result = calc_parity(n);
   if(result==1)
      cout << "Odd Parity" << endl;
   else
      cout << "Even Parity" << endl;
   return 0;
}

輸出

Even Parity

更新於: 03-Oct-2019

1K+ 瀏覽次數

開啟您的 事業

完成課程,獲得認證

開始
廣告
© . All rights reserved.