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

โปรแกรม Python นับบิตที่ไม่ได้เซ็ต (unset bits) ในช่วงที่กำหนด

กำหนดจำนวนเต็มบวกและช่วงของบิต งานของเราคือนับบิตที่ไม่ได้เซ็ต (คือบิตที่มีค่า 0) ในช่วงที่ระบุ

Input : n = 50, starting address = 2, ending address = 5
Output : 2

มีบิตไม่ได้เซ็ต 2 ตัวในช่วง 2 ถึง 5

อัลกอริทึม

ขั้นตอนที่ 1: แปลง n เป็นไบนารีโดยใช้ bin()
ขั้นตอนที่ 2: ลบตัวอักษรสองตัวแรกออก
ขั้นตอนที่ 3: กลับสตริง
ขั้นตอนที่ 4: นับบิต '0' ทั้งหมดตั้งแดดดัชนี l-1 ถึง r (r ไม่รวม)

โค้ดตัวอย่าง

# ฟังก์ชันนับบิตไม่ได้เซ็ตในช่วง
def countunsetbits(n, st, ed):
    # แปลง n เป็นไบนารี
    bi = bin(n)
    # ลบตัวอักษรสองตัวแรก
    bi = bi[2:]
    # กลับสตริง
    bi = bi[-1::-1]
    # นับบิต '0' เริ่มจากดัชนี l-1 ถึง r
    print(len([bi[i] for i in range(st-1, ed) if bi[i] == '0']))

# โปรแกรมหลัก
if __name__ == "__main__":
    n = int(input("ป้อนจำนวนเต็มบวก ::>"))
    st = int(input("ป้อนตำแหน่งเริ่มต้น"))
    ed = int(input("ป้อนตำแหน่งสิ้นสุด"))
    countunsetbits(n, st, ed)

ผลลัพธ์

ป้อนจำนวนเต็มบวก ::> 50
ป้อนตำแหน่งเริ่มต้น2
ป้อนตำแหน่งสิ้นสุด5
2