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

จำนวนศูนย์นำหน้าในการแทนค่าไบนารีของตัวเลขที่กำหนดใน C++


จากตัวเลข เราต้องหาจำนวนศูนย์นำหน้าในการแทนค่าเลขฐานสองของมัน สมมติว่าบิตทั้งหมดเป็น 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