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
-
‘-‘演算子を使用して2つの数値を加算しますか?
演算子のオーバーロードは、C++の重要な概念です。これは、演算子がオーバーロードされてユーザー定義の意味を与えるポリモーフィズムの一種です。オーバーロードされた演算子は、ユーザー定義のデータ型で操作を実行するために使用されます。たとえば、「+」演算子をオーバーロードして、整数、文字列(連結)などのさまざまなデータ型で加算を実行できます。 入力 10 20 20 30 出力 30 50 説明 演算子のオーバーロードによって‘-‘演算子を使用して2つの数値の加算を実行します。二項演算子は、操作を実行できるように、引数として1つのオブジェクトを必要とします。ここでFriend関数を使用して
-
C演算子を使用せずに2つの数値の合計を求めるプログラム
このセクションでは、プログラムに演算子を使用せずに2つの数値の合計を出力する方法を説明します。 この問題は注意が必要です。この問題を解決するために、printf()ステートメントの最小幅フィールドを使用しています。たとえば、printf()を使用して「Hello」の前にx個のスペースを入れたい場合は、これを記述できます。ここで、printf()は幅を取り、次に印刷される文字を取ります。この場合、空白を書き込んでいます。 サンプルコード #include<stdio.h> main() { int x = 10; printf(&