Hàm này dùng để trích xuất k bit từ vị trí pos và trả về giá trị trích xuất. Ở đây ta dùng kỹ thuật slicing (cắt lát) của Python.
Ví dụ
Input:: number=170 K=5 Pos=2 Output=21
Thuật toán
Extractionbit(no,k,pos) /* số nhập lưu trong no, bit trích xuất lưu trong k, vị trí bit là pos */ Bước 1: Chuyển số sang nhị phân bằng bin(). Bước 2: Bỏ hai ký tự đầu. Bước 3: Trích xuất k bit từ vị trí pos từ phải. Chỉ mục kết thúc e = len(bi) - pos và chỉ mục bắt đầu = e - k + 1. Bước 4: Trích xuất chuỗi con k bit. Bước 5: Chuyển chuỗi con trích xuất sang thập phân.
Mã ví dụ
# Chương trình Python trích xuất 'k' bit từ vị trí cho trước trong số 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 ("KẾT QUẢ CUỐI CÙNG ::>", int(substr, 2)) # Chương trình chính if __name__ == "__main__": no = int(input("Nhập số ::>")) k = int(input("Nhập k bit ::>")) pos = int(input("Nhập vị trí ::>")) extractedbits(no, k, pos) Kết quả
Nhập số ::>170 Nhập k bit ::>5 Nhập vị trí ::>2 KẾT QUẢ CUỐI CÙNG ::>21