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

C / C ++プログラムで算術演算子を使用せずに2つの整数を合計するにはどうすればよいですか?


このチュートリアルでは、C /C++で算術演算子を使用せずに2つの整数を合計する方法を理解するためのプログラムについて説明します。

算術演算子を使用せずに2つの整数を加算するには、ポインターまたはビット演算子を使用してこれを行うことができます。

ポインタの使用

#include <iostream>
using namespace std;
int sum(int a, int b){
   int *p = &a;
   return (int)&p[b];
}
int main() {
   int add = sum(2,3);
   cout << add << endl;
   return 0;
}

出力

5

ビット演算子の使用

#include <iostream>
using namespace std;
int sum(int a, int b){
   int s = a ^ b;
   int carry = a & b;
   if (carry == 0)
      return s;
   else
      return sum(s, carry << 1);
}
int main() {
   int add = sum(2,3);
   cout << add << endl;
   return 0;
}

出力

5

  1. Cのポインタを使用して2つの行列を乗算するにはどうすればよいですか?

    ポインタは、別の変数のアドレスを格納する変数です。 ポインタの機能 ポインタはメモリスペースを節約します。 メモリ位置に直接アクセスできるため、ポインタの実行時間が短縮されます。 ポインタを使用すると、メモリに効率的にアクセスできます。つまり、メモリは動的に割り当てられ、割り当てが解除されます。 ポインタはデータ構造で使用されます。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; メモリ内では、変数は次のように表すことができます- 宣言 ポインタの宣言は、以下のように実行できます- Int *p; これは、「p」が別

  2. マージソートを使用して配列内の反転をカウントするC/C ++プログラム?

    指定された配列をソートするために発生する反転の数は、反転数と呼ばれます。反転問題は、マージソートアルゴリズムを使用して解決できる古典的な問題です。この問題では、v左側にある要素よりも多くのすべての要素をカウントし、そのカウントを出力に追加します。 ThisLogicは、マージソートのマージ関数内で実行されます。 トピックをよりよく理解するために、例を見てみましょう。マージプロセスに関係する2つのサブアレイについて考えてみましょう- Input: arr[] = { 1, 9, 6, 4, 5} Output: Inversion count is 5 説明