เพื่อให้ได้ผลลัพธ์ของ n * 3.5 เราต้องคำนวณ (n * 2) + n + (n / 2) . การเลื่อนบิตไปทางซ้ายทีละ 1 จะได้ n * 2 และเลื่อนบิตไปทางขวาโดยคุณ n / 2 . เพิ่มสิ่งเหล่านั้นเพื่อให้ได้ผลลัพธ์
n * 3.5 =(n * 2) + n + (n / 2)
คุณสามารถส่งค่า n ที่แตกต่างกันเพื่อตรวจสอบสมการข้างต้นได้ มาดูตัวอย่างกัน
ป้อนข้อมูล
2 7 10
ผลผลิต
7 24 35
อัลกอริทึม
- เริ่มต้นหมายเลข n.
- ค้นหา n * 2 โดยใช้ตัวดำเนินการระดับบิตกะด้านซ้าย
- ค้นหา n / 2 โดยใช้ตัวดำเนินการระดับบิตกะทางขวา
- เพิ่มทั้งสองค่าข้างต้นพร้อมกับ n เพื่อให้ได้ผลลัพธ์
- ส่งคืนผลลัพธ์
ขั้นตอนข้างต้นเป็นปัญหาที่ตรงไปตรงมา
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include <bits/stdc++.h> using namespace std; int getTheResult(int x) { return (x << 1) + x + (x >> 1); } int main() { int n = 10; cout << getTheResult(n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
35