cho 4 khối dữ liệu 6 bit (kí tự):
n = 0 1 2 3
000100 100011 010001 000101 [1] Khi n=0 [1] Khi n=0
"cell" chứa chuỗi bit 00010010 00110100 là kết quả ghép nối của bin[0] và bin[1]. Để thu được 6 bit trong hộp, ta dịch phải chuỗi trên đi 10 bit và lấy 6 bit thấp nhất.
(0 + 3) % 4 * 2 + 4 = 3 * 2 + 4 = 10 [2] Khi n=1
"cell" chứa chuỗi bit 00010010 00110100 là kết quả ghép nối của bin[0] và bin[1]. Để thu được 6 bit trong hộp, ta dịch phải chuỗi trên đi 4 bit và lấy 6 bit thấp nhất.
(1 + 3) % 4 * 2 + 4 = 0 * 2 + 4 = 4 [3] Khi n=2
Lúc này pos = 1 nên "cell" chứa chuỗi bit 00110100 01000101 là kết quả ghép nối của bin[1] và bin[2]. Để thu được 6 bit, ta dịch phải chuỗi trên đi 6 bit và lấy 6 bit thấp nhất
(2 + 3) % 4 * 2 + 4 = 1 * 2 + 4 = 6 [4] Khi n=3
Vì pos = 2 nên "cell" chứa chuỗi bit 01000101 01100111 là kết quả ghép nối của bin[2] và bin[3]. Để thu được 6 bit, ta dịch phải chuỗi trên đi 8 bit và lấy 6 bit thấp nhất.
(3 + 3) % 4 * 2 + 4 = 2 * 2 + 4 = 8
Với n>=4, 4 trường hợp xử lí trên (n=0-3([1]~[4])) được lặp lại, vì thế điều kiện n=0~3 có thể thay thế bởi n % 4 = 0~3. Như vậy, có thể tóm tắt về số bit biến "cell" cần dịch phải như sau:
n % 4 Số bit biến "cell" dịch phải
Tài liệu ôn thi FE Tập 2
0 10
1 4
2 6
3 8
Biến đổi sang dạng (+4) giống trong công thức, ta có: n %
4
Số bit biến "cell" dịch phải
0 6 + 4
1 0 + 4
2 2 + 4
3 4 + 4
Phân tích thành thừa số 2 cho phần đầu trong biểu thức, ta có: n %
4
Số bit biến "cell" dịch phải
0 3 * 2 + 4
1 0 * 2 + 4
2 1 * 2 + 4
3 2 * 2 + 4
Do đó, tổng số bit biến "cell" cần dịch có thể tính được nhờ công thức "(n + 3) % 4 * 2 + 4". Khi biến "cell" được dịch phải một số bit thích hợp, ta thực hiện phép toán bit AND giữa kết quả thu được với 63. Bằng cách đó, ta có thể thu được 6 bit cần thiết.
[Câu hỏi con]Ô trống A