01/10/2018, 15:33
Toán tử AND trong thao tác với bit
AND
0010(số thập phân 3)
= 0010(số thập phân 2)```
Em đọc trên wiki có đoạn "Vì kết quả 0010 là khác 0, ta biết là bit thứ 2 trong dãy bit ban đầu đã được thiết đặt. Điều này được gọi là che đậy bit. (Bằng phép loại suy, công dụng của mặt nạ, các phần không nên bị thay thế hoặc các phần không được quan tâm. Trong trường hợp này, các giá trị 0 che đậy cho các bit không được quan tâm)." Không hiểu xin mọi người giải thích. Cảm ơn
Bài liên quan
Đọc bản English đi bạn, ông nào dịch cà chớn quá:
en.wikipedia.org
Bitwise operation | AND
A bitwise AND takes two equal-length binary representations and performs the logical AND operation on each pair of the corresponding bits, by multiplying them. Thus, if both bits in the compared position are 1, the bit in the resulting binary representation is 1 (1 × 1 = 1); otherwise, the result is 0 (1 × 0 = 0 and 0 × 0 = 0). For example: The operation may be used to determine whether a particular bit is set (1) or clear (0). For example, given a bit pattern 0011 (decimal 3), to determine whet...
Đọc đau não quá, phải map từ mặt nạ sang từ bitmark, hơn nữa còn mắc lỗi dịch quá sát nên bạn không hiểu cũng phải
Bạn đang trích bit phải không? Chứ bitmask nhiều cách dùng lắm.
Với a là bit thì: a AND 0 = 0 và a AND 1 = a
a OR 0 = a và a OR 1 = 1
Khi trích lấy bit thì sẽ có phần so sánh, mà so sánh với 0 thì dễ nhất nên chỉ có thể dùng AND để trích bit.
Bạn có 1 số chả C = 5 và số char thì nó bao gồm 8 bit từ bit số 0 đến bit số 7. Biểu diễn dưới dạng bit của C sẽ là 00000101.
Bạn muốn kiểm tra một bit bất kỳ giữa 0 và 7 ví dụ bit số 0 thì cách đơn giản là bạn xoá các bit không cần kiểm tra về 0. Khi đó kết quả thu được =0 nếu bit cần kiểm tra =0, >0 nếu bit cần kiểm tra =1.
Để làm điều đó bạn sẽ AND C với một số mà bit số 0 bạn set = 1 và các bit khác là 0. Nó chính là 00000001 gọi là MASK (mặt nạ - sẽ che đi các bit không cần quan tâm). Kết quả:
Nhìn kết quả bạn sẽ thấy kết quả là giá trị của C đã bị clear các bit từ 1 đến 7 do nó được and với một số mà bit số 1->7 là 0. KQ>0 chứng tỏ bit 0 của C=1.
Tương tự nếu kiểm tra bit số 1 của C thì MASK bây giờ là 00000010. Kết quả sẽ = 0 chứng tỏ bit 1 của C=0.
Thực tế MASK ít được viết dưới dạng bit 0-1 mà viết dưới dạng hexa.