ให้หมายเลขไบนารีที่ไม่ได้ลงนามแบบ 32 บิต ภารกิจคือการนับชุดบิต กล่าวคือ มี '1 อยู่ในนั้น
ตัวอย่าง
ป้อนข้อมูล:
N = 00000000000000100111
ผลลัพธ์:
4
คำอธิบาย: ชุดบิตทั้งหมดที่มีอยู่ในหมายเลขที่ไม่ได้ลงนามที่ระบุคือ 4 ดังนั้นเราจะคืนค่าเอาต์พุตเป็น '4'
แนวทางในการแก้ปัญหานี้
เราได้ให้เลขฐานสอง 32 บิตที่ไม่ได้ลงนาม ภารกิจคือการนับว่ามี '1 อยู่ในนั้นกี่ตัว
ในการนับจำนวน '1' ที่มีอยู่ในเลขฐานสองที่กำหนด เราสามารถใช้ฟังก์ชัน STL ในตัว '__builin_popcount(n)' ซึ่งใช้เลขฐานสองเป็นพารามิเตอร์อินพุต
- ใช้เลขฐานสอง N เป็นอินพุต
- ฟังก์ชัน count1Bit(uint32_t n) รับเลขฐานสอง 32 บิตเป็นอินพุตและส่งกลับจำนวน '1' ที่มีอยู่ในเลขฐานสอง
- ฟังก์ชัน inbuilt __builtin_popcount(n) รับอินพุตของ 'n' เป็นพารามิเตอร์และส่งกลับการนับ
ตัวอย่าง
#include<bits/stdc++.h> using namespace std; int count1bits(uint32_t n) { return bitset < 32 > (n).count(); } int main() { uint32_t N = 0000000010100000011; cout << count1bits(N) << endl; return 0; }
การเรียกใช้โค้ดด้านบนจะสร้างผลลัพธ์เป็น
ผลลัพธ์
4
ในจำนวนที่กำหนด มี 4 ชุดบิตหรือ '1s' อยู่ในนั้น ดังนั้นผลลัพธ์คือ '4'