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

C++でビット演算子を使用して任意の数値を乗算します


このチュートリアルでは、ビット演算子を使用して、指定された2つの数値を乗算するプログラムを作成します。

左シフト(<<) 乗算には演算子が使用されますが、右シフト(>>) 分割に使用されます。

2つの数値の乗算x、y x * y =(x * 2)*(y / 2)と書くことができます yがそれ以外の場合は、 x * y =(x * y)*(y / 2)+xに等しくなります。

したがって、2番目の数値が奇数になるたびに、最初の数値を結果に追加します。問題を解決するための手順を見てみましょう。

アルゴリズム

  • 2つの数字を初期化します。
  • 2番目の数値が0になるまで繰り返すループを記述します。
    • 2番目の数値が奇数の場合は、最初の数値を結果に追加します。
    • 最初の数値を1ビット左シフトします。
    • 2番目の数値を1ビット右シフトします。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
int multiplyTwoNumbers(int a, int b) {
   int result = 0;
   while (b > 0) {
      if (b & 1) {
         result += a;
         }
      a = a << 1;
      b = b >> 1;
   }
   return result;
}
int main() {
   cout << multiplyTwoNumbers(75, 4) << endl;
   cout << multiplyTwoNumbers(90, 9) << endl;
   cout << multiplyTwoNumbers(83, 66) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

300
810
5478

  1. C++を使用した合計がnに等しい電力項の最小数。

    問題の説明 2つの正の整数NとXが与えられます。タスクは、Xの累乗の数が最小になるようにNをXの累乗の合計(X0 +X1+…..+Xn)として表すことです。 合計をNに等しくするために使用されるNの最小累乗数を出力します。 N=15およびX=3の場合、次のように「3」の3乗が必要です- 15 =(3 2 + 3 1 + 3 1 ) アルゴリズム 以下の式を使用して最終結果を計算します- 1. If x = 1, then answer will be n only (n = 1 + 1 +…. n times)s 2. Any number n can be

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

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