โจทย์
เพื่อให้ได้ผลลัพธ์ของ n * 3.5 เราต้องคำนวณ (n * 2) + n + (n / 2) การเลื่อนบิตไปทางซ้าย 1 จะให้ n * 2 และการเลื่อนบิตไปทางขวา 1 จะให้ 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