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

Python Count ตั้งค่าบิตในช่วง?


จำนวนบวกที่กำหนดเมื่อแปลงเป็นไบนารีจะมีจำนวนเซ็ตบิต ชุดบิตในเลขฐานสองจะแสดงด้วย 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