Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คูณจำนวนใด ๆ ด้วยการใช้ Bitwise Operator ใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่คูณตัวเลขสองตัวที่ระบุโดยใช้ตัวดำเนินการระดับบิต

กะซ้าย (<<) ตัวดำเนินการจะใช้สำหรับการคูณในขณะที่ กะขวา (>>) ใช้สำหรับแผนก

การคูณตัวเลขสองตัว x, y สามารถเขียนเป็น x * y =(x * 2) * (y / 2) ถ้า y เป็นอย่างอื่น จะเท่ากับ x * y =(x * y) * (y / 2) + x.

ดังนั้นเมื่อใดก็ตามที่ตัวเลขที่สองกลายเป็นเลขคี่ ให้เพิ่มตัวเลขแรกเข้ากับผลลัพธ์ มาดูขั้นตอนการแก้ปัญหากัน

อัลกอริทึม

  • เริ่มต้นตัวเลขสองตัว
  • เขียนลูปที่วนซ้ำจนตัวเลขที่สองกลายเป็น 0
    • หากตัวเลขที่สองเป็นเลขคี่ ให้เพิ่มตัวเลขแรกในผลลัพธ์
    • เลื่อนตัวเลขแรกไปทางซ้าย 1 บิต
    • เลื่อนตัวเลขที่สองไปทางขวา 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