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

C++でXOR演算子を使用せずに2つの数値のXORを検索する


この問題では、整数値AとBが与えられます。私たちのタスクは、XOR演算子を使用せずに2つの数値のXORを見つけることです。 。

問題を理解するために例を見てみましょう

Input : A = 4, B = 5
Output : 1

ソリューションアプローチ

この問題を解決する1つの方法は、数値をそれぞれの2進数に変換し、このテーブルに基づいてビット演算を実行することです。

A B 出力
0 0 0
0 1 1
1 0 1
1 1 0

これにより、結果が返されます。このために、ビット演算を使用します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int calcXORwoOperator(int a, int b){
   int xorVal = 0;
   for (int i = 31; i >= 0; i--){
      bool val1 = a & (1 << i);
      bool val2 = b & (1 << i);
      bool xorBit = (val1 & val2) ? 0 : (val1 | val2);
      xorVal <<= 1;
      xorVal |= xorBit;
   }
   return xorVal;
}
int main(){
   int a = 4, b = 5;
   cout<<"XOR of the numbers is "<<calcXORwoOperator(a, b);
   return 0;
}

出力

XOR of the numbers is 1

別の方法

xorを見つける別の方法は、両方の数値に存在するビットを1つずつ比較し、それらに対してXORと同等の演算を実行することです。

式(a | b)-(a&b)はa^bと同等です。そこで、この操作を行います。これにより、2つの数値aとbのXORを見つけます。

ソリューションの動作を説明するプログラム

#include <iostream>
#include <bitset>
using namespace std;
int calcXORwoOperator(int a, int b) {
   return (a | b) - (a & b);
}
int main(){
   int a = 4;
   int b = 5;
   cout<<"The XOR of both numbers is "<<(bitset<8>(calcXORwoOperator(a, b)));
   return 0;
}

出力

The XOR of both numbers is 00000001

  1. ‘-‘演算子を使用して2つの数値を加算しますか?

    演算子のオーバーロードは、C++の重要な概念です。これは、演算子がオーバーロードされてユーザー定義の意味を与えるポリモーフィズムの一種です。オーバーロードされた演算子は、ユーザー定義のデータ型で操作を実行するために使用されます。たとえば、「+」演算子をオーバーロードして、整数、文字列(連結)などのさまざまなデータ型で加算を実行できます。 入力 10 20 20 30 出力 30 50 説明 演算子のオーバーロードによって‘-‘演算子を使用して2つの数値の加算を実行します。二項演算子は、操作を実行できるように、引数として1つのオブジェクトを必要とします。ここでFriend関数を使用して

  2. C演算子を使用せずに2つの数値の合計を求めるプログラム

    このセクションでは、プログラムに演算子を使用せずに2つの数値の合計を出力する方法を説明します。 この問題は注意が必要です。この問題を解決するために、printf()ステートメントの最小幅フィールドを使用しています。たとえば、printf()を使用して「Hello」の前にx個のスペースを入れたい場合は、これを記述できます。ここで、printf()は幅を取り、次に印刷される文字を取ります。この場合、空白を書き込んでいます。 サンプルコード #include<stdio.h> main() {    int x = 10;    printf(&