इस लेख में, हम दी गई संख्या 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