ฟังก์ชันนี้ใช้ดึง k บิตจากตำแหน่ง pos และคืนค่าที่ดึงได้ ใช้เทคนิค slicing ของ Python
ตัวอย่าง
Input:: number=170 K=5 Pos=2 Output=21
อัลกอริทึม
Extractionbit(no,k,pos) /*ตัวเลขอินพุทเก็บใน no, บิตที่ดึงเก็บใน k, ตำแหน่งบิตคือ pos */ ขั้นตอนที่ 1: แปลงตัวเลขเป็นไบนารีด้วย bin() ขั้นตอนที่ 2: ลบสองตัวอักษรแรก ขั้นตอนที่ 3: ดึง k บิตจากตำแหน่ง pos จากขวา ดังนั้นดัชนีสิ้นสุดของ substring ที่ดึงคือ e=len(bi)-pos และดัชนีเริ่มต้น=e-k+1 ขั้นตอนที่ 4: ดึง k บิต substring ขั้นตอนที่ 5: แปลง substring ที่ดึงได้เป็นทศนิยมอีกครั้ง
โค้ดตัวอย่าง
# โปรแกรม Python ดึง 'k' บิตจากตำแหน่งที่กำหนดในตัวเลข
def extractedbits(no, k, pos):
bi = bin(no)
bi = bi[2:]
e = len(bi) - pos
s = e - k + 1
substr = bi[s : e+1]
print("ผลลัพธ์สุดท้าย ::>", int(substr, 2))
# โปรแกรมหลัก
if __name__ == "__main__":
no = int(input("ป้อนตัวเลข ::>"))
k = int(input("ป้อน k บิต ::>"))
pos = int(input("ป้อนตำแหน่ง ::>"))
extractedbits(no, k, pos)
ผลลัพธ์
ป้อนตัวเลข ::>170 ป้อน k บิต ::>5 ป้อนตำแหน่ง ::>2 ผลลัพธ์สุดท้าย ::>21