จำนวนบวกที่กำหนดเมื่อแปลงเป็นไบนารีจะมีจำนวนเซ็ตบิต ชุดบิตในเลขฐานสองจะแสดงด้วย 1 ในบทความนี้ เราจะมาดูวิธีรับจำนวนเซ็ตบิตในตัวเลขที่กำหนดหลังจากที่แปลงเป็นค่าไบนารีแล้ว
การใช้ถังขยะและการแบ่งส่วน
ในตัวอย่างด้านล่าง เราใช้ตัวเลขและใช้ฟังก์ชัน bin เพื่อรับค่าไบนารี จากนั้นเราแบ่งมันเพื่อลบคำนำหน้าที่เพิ่มไปยังเลขฐานสองแล้วใช้ฟังก์ชัน range เพื่อรับ coutn ของ setbits
ตัวอย่าง
def SetBits_cnt(n, l, r):bin_val =bin(n) # Remove '0b' prefixed in bin_val conversion bin_val =bin_val[2:] print(bin_val) # สตริงย้อนกลับ bin_val =bin_val[-1::-1] # นับบิตชุดทั้งหมด '1' เริ่มต้นจากดัชนี l-1 พิมพ์ (len([bin_val[i] สำหรับฉันในช่วง (l - 1, r) ถ้า bin_val[i] =='1'])) SetBits_cnt(83,1,6)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
10100113
การใช้ระดับบิต
ตัวดำเนินการระดับบิตสามารถใช้เพื่อรับเซ็ตบิตได้เช่นกัน ในตัวอย่างด้านล่าง ขั้นแรกเราใช้ตัวดำเนินการระดับบิตโดยคำนึงถึงช่วงแล้วส่งต่อไปยังฟังก์ชันอื่นซึ่งนับเฉพาะชุดบิตเท่านั้น
ตัวอย่าง
def trackBitsInRange(n, l, r):# using bitwise operator bit_num =((1 <ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
3