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