プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

数値のパリティチェック


数値のパリティは、その数値に相当する2進数に存在する1の数値に基づいています。現在の1のカウントが奇数の場合、奇数のパリティを返します。偶数の1の場合、偶数のパリティを返します。

コンピュータのメモリ内の数値は2進数で格納されていることがわかっているので、数値を簡単にシフトできます。この場合、ビットをシフトすることにより、指定された数値に相当する2進数に存在する1の数値をカウントします。

入力と出力

Input:
A number: 5
Binary equivalent is (101)
Output:
Parity of 5 is Odd.

アルゴリズム

finParity(n)

入力: 数n。

出力: 番号に偶数パリティまたは奇数パリティがあることを確認してください。

Begin
   count := 0
   temp := n

   while temp >= 2, do
      if temp has 1 as LSb, then
         count := count + 1
      temp := right shift temp for 1 bit
   done

   if count is odd number, then
      display it is odd parity
   else
      display even parity
End

#include <iostream>
using namespace std;

bool findParity(int n) {
   int count = 0;
   int temp = n;

   while (temp>=2) {
      if(temp & 1)    //when LSb is 1, increase count
         count++;
      temp = temp >> 1;    //right shift number by 1 bit
   }      
   return (count % 2)?true:false;
}

int main() {
   int n;
   cout << "Enter a number: "; cin >>n;
   cout << "Parity of " << n << " is " << (findParity(n)?"Odd":"Even");
}

出力

Enter a number: 5
Parity of 5 is Odd

  1. 数値がC++の別の数値の累乗であるかどうかを確認します

    ここでは、ある数が別の数の累乗であるかどうかを確認します。番号125があり、別の番号5が与えられているとします。したがって、125が5の累乗であることがわかると、trueが返されます。この場合はtrueです。 125 =5 3 。 アルゴリズム isRepresentPower(x, y): Begin    if x = 1, then       if y = 1, return true, otherwise false    pow := 1    while pow < y, do &

  2. 数値がC#で2の累乗であるかどうかを確認するにはどうすればよいですか?

    2の累乗は、2nの形式の数値です。nは整数です 2を底とし、整数nを指数とするべき乗の結果。 n 2n 0 1 1 2 2 4 3 8 4 16 5 32 例1 class Program {    static void Main() {       Console.WriteLine(IsPowerOfTwo(9223372036854775809));       Console.WriteLine(IsPowe