ตรวจสอบว่าตัวเลขที่กำหนดเป็นยกกำลัง 2 หรือไม่ ก่อนอื่นให้ตรวจสอบด้านล่างว่าตัวเลขใดเป็นเลขยกกำลังสองหรือไม่ รหัสนี้จะตรวจสอบว่าตัวเลขเป็นเลขคี่แล้วหารมันพร้อมกันจนกลายเป็น 0 หรือเลขคี่ หากกลายเป็น 0 แสดงว่าเป็นกำลัง 2 ไม่เช่นนั้นจะไม่ใช่
ทางเลือกที่ดีกว่าคือการบันทึกหมายเลข หากเป็นจำนวนเต็ม n จะเป็นกำลัง 2 อย่างอื่นไม่ใช่ ตัวเลขที่ยกกำลัง 2
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 ... 22 = 4 25 = 32 210 = 1024
Input: 8 Output: Number is power of 2
คำอธิบาย
วิธีง่ายๆ คือ นำบันทึกของตัวเลขบนฐาน 2 และถ้าคุณได้จำนวนเต็ม ตัวเลขนั้นจะเป็นยกกำลัง 2
โดยการหาร N ซ้ำๆ ด้วย 2 ถ้า N เป็นจำนวนคู่ ถ้ามันจบลงที่ 1 แล้ว N จะเป็นกำลังของ 2
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int n=8;
if(n>0) {
while(n%2 == 0) {
n/=2;
}
if(n == 1) {
cout<<"Number is power of 2"<<endl;
}
}
if(n == 0 || n != 1) {
cout<<"Number is not power of 2"<<endl;
}
return 0;
}