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