จากตัวเลข เราต้องหาจำนวนศูนย์นำหน้าในการแทนค่าเลขฐานสองของมัน สมมติว่าบิตทั้งหมดเป็น 32 มาดูตัวอย่างกัน
ป้อนข้อมูล
5
ผลผลิต
25
การแทนค่าเลขฐานสองของ 5 คือ 00000...00101 จำนวนศูนย์นำหน้าคือ 29
อัลกอริทึม
- เริ่มต้นหมายเลข n.
- ค้นหาการแทนค่าไบนารีของ n
- ลบความยาวของการแสดงเลขฐานสองของ n จากจำนวนบิตทั้งหมดเช่น 32
- ส่งคืนผลลัพธ์
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include <bits/stdc++.h> using namespace std; int getLeadingZeroesCount(unsigned int n) { int totalBits = sizeof(n) * 8; string binary = ""; while (n) { int remainder = n % 2; if (remainder || binary.length() > 0) { binary += remainder; } n /= 2; } return totalBits - binary.length(); } int main() { int n = 101; cout << getLeadingZeroesCount(n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
25