Bitmasks là cũ khủng khiếp. Tôi chưa thể tìm thấy tài liệu tham khảo cho cái đầu tiên, nhưng chúng chắc chắn rất phổ biến bởi sự ra đời của bộ xử lý 8 bit và có khả năng cũng được sử dụng trong bộ xử lý 4 bit.
Ý tưởng đằng sau bitmasks là tận dụng sự song song của bitwise. Một máy tính 8 bit có thể thực hiện thao tác bitwise tương tự thành 8 bit cùng một lúc nếu chúng được đóng gói thành một từ gốc duy nhất (có nghĩa là nó phù hợp với một thanh ghi).
Tên đến từ mặt nạ, là một cách tiếp cận chung để che đậy các khu vực bạn không muốn tương tác. Ví dụ, hãy xem xét khuôn tô này để che đi các khu vực của một bức tường (khuôn tô đã được di chuyển sau khi vẽ để hiển thị mẫu)
Mặt nạ cũng được sử dụng trong nhiếp ảnh, nơi chúng đi theo thuật ngữ "né tránh" chứ không phải là "khuôn tô". Bạn có thể sử dụng mặt nạ để che khuất một số ánh sáng trong khi in để làm sáng một khu vực.
Thuật ngữ này cũng được sử dụng trực tiếp trong quang khắc, đây là kỹ thuật được sử dụng để chế tạo các mạch tích hợp. Mặt nạ ngăn ánh sáng chiếu vào bộ phận quang học được vẽ trên chip, tạo ra các mẫu mà sau đó dẫn đến các mẫu mặt trên chip. (Hình ảnh dưới đây là một trong những mặt nạ cho bộ xử lý Intel 8080A , nếu bạn tò mò)
Tương tự như vậy, trong mặt nạ bit, bạn đang chọn các phần của từ bạn muốn thao tác, che đi tất cả các bit còn lại. Trong ví dụ dưới đây, tôi sử dụng thao tác "và" để che dấu đầu vào sao cho chỉ có bit thứ 3, 4 và 8 hiển thị. Phần còn lại được "đeo mặt nạ" sao cho chúng là 0. Mặt nạ tôi sử dụng là 00110001
. Tôi hiển thị nó bên dưới với #
đại diện 0 và .
đại diện cho 1 vì điều đó làm cho hình thức trực quan của bitmask tương tự như mặt nạ vật lý ở trên và tôi hiển thị một hàng "bit được chọn" hiển thị các bit từ đầu ra không bị che đi ( "Các bit được chọn" thực sự không phải là một hoạt động logic xảy ra ... bộ xử lý thực sự đi đúng từ đầu vào VÀ mặt nạ đến đầu ra trong một bước, nhưng tôi nghĩ rằng nó làm rõ hình ảnh trực quan)
Input 10010111
Mask ##..###. (aka 00110001)
-----------------------
(selected) 01 1
Input AND Mask 00010001
Như tôi đã đề cập, bitmasking rất cũ vì nó làm tăng năng suất của bộ xử lý một cách đáng kể. Trên bộ xử lý 4 bit, nó có thể làm cho bộ xử lý tăng gấp 4 lần. Trên một quy trình 8 bit, hoặc nó có thể làm cho nó nhanh hơn 8 lần (tất nhiên chỉ hoạt động theo bitwise).
Một ứng dụng hấp dẫn cho việc này là động cơ cờ vua. Bàn cờ có 64 ô vuông. Động cơ hiện đại có số nguyên 64 bit. Đây là một chút may mắn cực kỳ thuận tiện, vì vậy các động cơ cờ vua thường tận dụng nó. Họ có cái gọi là " bảng bit " chứa vị trí của các mảnh. Điều này cho phép bạn thực hiện tất cả các loại tối ưu hóa, chẳng hạn như tìm kiếm tất cả các bước cầm đồ trong một bước duy nhất.