D产业的发展 và thao tác bit
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| bit/bɪt/ | Bit |
| mask/mæsk/ | mặt nạ |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | dịch chuyển logic |
| sign bit/saɪn bɪt/ | Bit dấu |
| arithmetic right shift/ˌærɪθˈmetɪk raɪt ʃɪft/ | dịch chuyển phải theo phép tính |
| cyclic shift/ˈsaɪklɪk ʃɪft/ | dịch chuyển tuần hoàn |
Nhân trên con chip không thể nhân
- Bộ xử lý trong Game Boy năm 1989 hoàn toàn không có lệnh nhân. Mọi điểm số, mọi tọa độ cần gấp đôi đều được nhân đôi bằng cách trượt các bit của chúng một vị trí sang trái.
- Một phép trượt tốn một chu kỳ xung nhịp. Phép nhân được xây dựng từ các phép trượt và cộng là cách những trò chơi đó chạy trên vài kilobyte và vài miliwatt.
- Các thủ thuật tương tự kiểm soát các dây đơn lẻ trong thiết bị nhúng: một bit của thanh ghi cho mỗi cảm biến hoặc cơ cấu chấp hành, được kiểm tra và thiết lập bằng một mặt nạ.
- Bài học này gồm ba loại phép trượt và bốn phép toán mặt nạ, trong chính các chỉ dẫn của đề thi.
Phép trượt logic
- Một phép trượt logic di chuyển mọi bit sang trái hoặc phải một số vị trí và điền các vị trí trống bằng 0.
LSL #1di chuyển các bit sang trái và một 0 đi vào bên phải: đối với số không dấu thì là × 2.LSR #1di chuyển chúng sang phải và một 0 đi vào bên trái: số nguyên ÷ 2.- Trượt $n$ vị trí nhân hoặc chia cho $2^{n}$.
00001011(11) sauLSL #1là00010110(22); sauLSR #1nó là00000101(5, phần dư bị mất).

Trượt trái logic (× 2), trượt phải logic (÷ 2) và trượt phải số học (giữ nguyên bit dấu)
D产业发展 và che masking các bit của một byte
Chọn một toán tử và xem từng bit kết quả. D产业发展 (<<) moves every bit up one place (×2); a right shift (>>) di chuyển chúng xuống (÷2); AND với mask xóa các bit bạn không muốn.
Giá trị 8-bit 00001011 (11) được D产业发展 bởi 1 (LSL #1). Giá trị thập phân mới là gì?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Phép dịch trái 1 tương đương với phép nhân cho 2: $11 \times 2 = 22$ (00010110).
D产业发展 một số không dấu trái bởi 3 vị trí nhân nó với số nào?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Di chuyển $n$ vị trí nhân với $2^n$, vì vậy di chuyển 3 vị trí là $2^3 = 8$.
Ví dụ giải: khi × 4 ngừng đúng
- Các bit bị đẩy ra khỏi cuối sẽ bị mất, do đó phép nhân chỉ chính xác khi những bit này là số không.
LSL #2trên byte bổ sung hai11001010cho kết quả00101000. Hai số 1 rơi ra ngoài bên trái đã biến mất, bit dấu đã thay đổi, và kết quả không còn gấp bốn lần giá trị gốc nữa.LSL #2trên00001011(11) cho kết quả00101100(44), điều này đúng, vì chỉ có các số không đã bị mất.- Đề thi yêu cầu cả hai: mẫu sau khi trượt, và nhận xét xem giá trị có còn đúng hay không.
Phép trượt phải số học
- Một phép trượt phải logic thuần túy đưa số 0 vào bit cao nhất, điều đó sẽ biến một số bổ sung hai âm thành số dương.
- Một phép trượt phải số học sao chép bit dấu vào mỗi vị trí trống, nên số âm vẫn giữ nguyên âm và phép trượt vẫn chia cho 2.
10011110trượt phải số học 3 vị trí là11110011;01011100cho kết quả00001011.

Phép trượt phải logic và số học trên cùng một byte: chỉ khác nhau ở bit được đưa vào
D产业发展 số học bên phải khác với D产业发展 logic bên phải vì nó:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Nó bảo tồn bit dấu, vì vậy chia một số có dấu âm cho lũy thừa của 2 giữ cho nó âm.
D产业发展 logic bên phải luôn đặt 0 ở bit trên cùng, vì vậy nó có thể biến một số có dấu âm thành dương.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Đó chính là lý do tại sao phép chia số có dấu cần D产业发展 số học bên phải, sao chép bit dấu thay vì.
Phép dịch phải số học của 10011110 đi 3 vị trí tạo ra mẫu bit 8 ____.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Ba vị trí trống bên trái được lấp đầy bằng các bản sao của bit dấu, 1, và ba bit bên phải cùng 110 rơi ra.
Phép trượt tuần hoàn
- Một phép trượt tuần hoàn, hay xoay, đưa bit rơi ra khỏi một đầu quay trở vào đầu kia, nên không có bit nào bị mất.
- Phép trượt trái tuần hoàn 1 trên
10000110cho kết quả00001101: số 1 dẫn đầu xuất hiện lại bên phải. - Dịch logic điền bằng số không, dịch toán học điền bằng bit dấu, dịch vòng tròn điền bằng bit vừa rời đi. Đó chính là toàn bộ sự khác biệt giữa ba loại dịch chuyển này.
D产业发展 vòng quay trái 1 vị trí được áp dụng cho 10000110. Kết quả là gì?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Bit 1 dẫn đầu rời khỏi bên trái và đi vào lại bên phải, vì vậy không có bit nào bị mất. 00001100 sẽ là D产业发展 logic.
Ví dụ giải: 240 hay trừ 16?
- Lấy
11110000. Đọc như số không dấu nó là 240; đọc như bổ sung hai nó là −16. LSR #1đưa vào 0 và cho kết quả01111000= 120, một nửa đúng của 240.ASR #1sao chép bit dấu và cho kết quả11111000= −8, một nửa đúng của −16.- Không cái nào sai. Mỗi cái chia đôi giá trị dưới một cách đọc, đó là lý do bộ xử lý cần cả hai lệnh.
Câu nào sau đây về byte 11110000 là đúng? Chọn tất cả những câu áp dụng.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Hai kết quả chỉ khác nhau ở bit đi vào từ bên trái: 0 cho D产业发展 logic, bit dấu cho D产业发展 số học.
Mặt nạ bit
- Thiết bị nhúng thường dùng một bit của thanh ghi cho mỗi tín hiệu. Một mặt nạ là một mẫu kết hợp với thanh ghi sao cho chỉ bit được chọn thay đổi.
- Đặt bit $n$:
ORvới mặt nạ có số 1 ở vị trí $n$. Xóa bit $n$:ANDvới mặt nạ có số 0 ở đó và 1 ở khắp nơi khác. - Lật bit $n$:
XORvới mặt nạ có số 1 ở đó. Kiểm tra bit $n$:ANDvới mặt nạ đó, rồiCMP #0: không bằng nhau có nghĩa bit đã được đặt.

Set với OR, clear với AND, toggle với XOR, mỗi phép dùng một mask
Khớp mỗi thao tác bit với toán tử bitwise (và mask) thực hiện việc đó.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
OR SET, AND CLEAR, XOR TOGGLE, và AND + test khác 0 đọc bit — bốn thao tác masking.
Để SET một bit cụ thể lên 1, bạn kết hợp thanh ghi với một mask bằng cách sử dụng:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
OR với một mask có bit đó = 1 ép bit đó lên 1 và giữ nguyên các bit khác.
Ví dụ giải: các lệnh trên một byte
- ACC chứa
10101100. Mask có thể được viết là#nthập phân,Bnnhị phân hoặc&nthập lục phân. AND B00001111cho ra00001100: chỉ bốn bit thấp nhất còn lại.OR #1cho ra10101101: bit ít quan trọng nhất được set và không có gì khác thay đổi.XOR &FFđảo ngược mọi bit thành01010011. Sau đóAND B00001000trênCMP #0kiểm tra bit 3; kết quả00001000không bằng không, nên bit 3 đã được đặt.LSL #2cho ra10110000, mất hai bit cao;LSR #3cho ra00010101.
Lệnh thiết lập bit ít quan trọng nhất của ACC lên 1 và giữ nguyên các bit khác là OR ____.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
OR với một mask có 1 chỉ ở vị trí cuối cùng. Thập phân #1, nhị phân B00000001 và thập lục phân &1 là cùng một mask.
Sắp xếp các bước để kiểm tra xem bit 3 của ACC có được SET không.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Mask, so sánh, nhảy. AND để lại 00001000 hoặc 00000000, và so sánh với 0 cho thấy sự khác biệt.
Giám sát và điều khiển, từng bit một
- Trong thiết bị giám sát, mỗi bit của một thanh ghi tương ứng với một cảm biến có nghĩa là một phép AND
ANDđơn lẻ kiểm tra xem một cảm biến cụ thể nào đó có đang bật hay không. - Trong thiết bị điều khiển, một phép OR
ORbật bit điều khiển của cơ cấu chấp hành mà không làm ảnh hưởng đến các bit khác, và một phép ANDANDtắt nó đi. - Nó nhanh, sử dụng gần như không bộ nhớ, và một byte chứa tám trạng thái bật/tắt độc lập. Đó chính là lý do mà đề thi yêu cầu giải thích.
Điểm số dễ mất
- Dịch sang trái tương đương với × 2 mỗi vị trí chỉ khi các bit bị đẩy ra ngoài đều là số không. Hãy nói rõ điều này khi một bit 1 bị mất.
- Dời phải logic đưa vào 0; dời phải số học sao chép bit dấu. Chọn tùy theo việc số có mang dấu hay không.
- Để xóa một bit, mặt nạ cần có 0 tại vị trí bit đó và 1s ở tất cả các vị trí khác. Một mặt nạ toàn số không sẽ xóa toàn bộ thanh ghi.
- Permutation (XOR)
XORđảo ngược; nó không đặt bit. Để đặt bit, hãy dùngOR; để kiểm tra, hãy dùngANDvà so sánh với số không.
Bạn đã nắm vững
- dời logic điền bằng 0: trái × 2 mỗi bước, phải ÷ 2, và việc mất bit 1 sẽ phá vỡ phép tính số học
- dời phải số học sao chép bit dấu; d dời vòng tròn đưa bit quay trở lại đầu
- masks: OR set · AND clear · XOR toggle · AND rồi CMP #0 test
- một bit cho mỗi cảm biến hoặc cơ cấu chấp hành giúp giám sát và điều khiển nhanh và nhỏ gọn; masks được viết dưới dạng
#n,Bnhoặc&n