Máy tính OR bit là gì?
Công cụ này tính phép OR theo bit của hai số nguyên, được viết trong hầu hết các ngôn ngữ lập trình dưới dạng a | b. Phép OR so sánh hai số theo từng bit và cho ra kết quả mà mỗi bit bằng 1 nếu một trong hai (hoặc cả hai) bit tương ứng bằng 1, và chỉ bằng 0 khi cả hai bit đầu vào đều bằng 0.
Cách sử dụng
Nhập số nguyên thứ nhất (A) và số nguyên thứ hai (B), sau đó xem kết quả ở dạng thập phân. Công cụ hỗ trợ cả số nguyên âm và dương. Mọi giá trị nhập vào và kết quả xuất ra đều ở hệ cơ số 10, nhưng bên trong mỗi giá trị được xử lý theo dạng biểu diễn nhị phân của nó.
Giải thích công thức
Phép tính được thực hiện trên từng bit dựa theo bảng chân trị của OR: \(0 \mathbin{|} 0 = 0\), \(0 \mathbin{|} 1 = 1\), \(1 \mathbin{|} 0 = 1\), \(1 \mathbin{|} 1 = 1\).
$$\text{Result} = \text{A} \mathbin{|} \text{B}$$
Ví dụ, lấy A = 12 và B = 10. Ở dạng nhị phân, 12 = 1100 và 10 = 1010. Xếp thẳng hàng rồi thực hiện OR theo từng cột, ta được 1110, tương đương 14 trong hệ thập phân. Vậy \(12 \mathbin{|} 10 = 14\).
Ví dụ minh họa
Giả sử bạn muốn tính \(5 \mathbin{|} 3\). Ở dạng nhị phân, 5 = 101 và 3 = 011. Thực hiện OR từng bit: \(1 \mathbin{|} 0 = 1\), \(0 \mathbin{|} 1 = 1\), \(1 \mathbin{|} 1 = 1\), cho ra 111 = 7. Máy tính trả về 7.
Bảng Tham Khảo Giá Trị Bitwise OR Phổ Biến
Bảng dưới đây cho \(A \mathbin{|} B\) cho mỗi cặp toán hạng nhỏ từ 0 đến 8. Đọc hàng cho A và cột cho B; ô là kết quả thập phân.
| | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 1 | 1 | 3 | 3 | 5 | 5 | 7 | 7 | 9 |
| 2 | 2 | 3 | 2 | 3 | 6 | 7 | 6 | 7 | 10 |
| 3 | 3 | 3 | 3 | 3 | 7 | 7 | 7 | 7 | 11 |
| 4 | 4 | 5 | 6 | 7 | 4 | 5 | 6 | 7 | 12 |
| 5 | 5 | 5 | 7 | 7 | 5 | 5 | 7 | 7 | 13 |
| 6 | 6 | 7 | 6 | 7 | 6 | 7 | 6 | 7 | 14 |
| 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 15 |
| 8 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 8 |
Đường chéo (nơi A = B) luôn trả về chính toán hạng đó, vì x | x = x.
Bitwise OR là cách tiêu chuẩn để kết hợp các cờ quyền. Các bit quyền kiểu Unix phổ biến là read (đọc) = 4 (100), write (ghi) = 2 (010), execute (thực thi) = 1 (001):
| Kết hợp | Biểu thức | Thập phân | Nhị phân |
|---|---|---|---|
| Đọc + Ghi | 4 | 2 | 6 | 110 |
| Đọc + Thực thi | 4 | 1 | 5 | 101 |
| Ghi + Thực thi | 2 | 1 | 3 | 011 |
| Đọc + Ghi + Thực thi (rwx) | 4 | 2 | 1 | 7 | 111 |
| Hai byte hợp nhất | 240 | 15 | 255 | 11111111 |
Các Thuật Ngữ Chính
- Bit
-
Đơn vị dữ liệu kỹ thuật số nhỏ nhất, chứa một giá trị nhị phân đơn là
0hoặc1. Một nhóm 8 bit tạo thành một byte. - Bit được đặt / bỏ đặt
-
Một bit được đặt có giá trị
1; một bit bỏ đặt (hoặc xóa) có giá trị0. Bitwise OR thường được sử dụng để đặt các bit cụ thể mà không ảnh hưởng đến các bit khác. - Bitmask
- Một số nguyên có mẫu bit được chọn để chọn, đặt hoặc xóa các bit cụ thể trong một giá trị khác. OR một giá trị với một mặt nạ buộc mọi bit được đặt trong mặt nạ phải được đặt trong kết quả.
- Flag (Cờ)
-
Một bit riêng lẻ (thường được cung cấp một hằng số được đặt tên) được sử dụng để biểu thị một cài đặt bật/tắt. Nhiều cờ được đóng gói vào một số nguyên và kết hợp với OR, ví dụ
READ | WRITE. - Two's complement (Bù hai)
-
Cách tiêu chuẩn các máy tính biểu diễn các số nguyên có dấu. Bit có ý nghĩa nhất mang trọng lượng âm, vì vậy một số
n-bit có phạm vi từ \(-2^{n-1}\) đến \(2^{n-1}-1\). Ví dụ, \(-1\) được lưu trữ dưới dạng tất cả các bit 1. - Bit có ý nghĩa nhất / ít nhất (MSB / LSB)
- MSB là bit bên trái, mang giá trị vị trí lớn nhất (và dấu hiệu trong bù hai); LSB là bit bên phải, với giá trị vị trí \(2^0 = 1\).
- Cơ số 10 so với cơ số 2
- Cơ số 10 (thập phân) là hệ thống số hàng ngày sử dụng các chữ số 0–9. Cơ số 2 (nhị phân) chỉ sử dụng 0 và 1, với mỗi vị trí có giá trị là một lũy thừa của hai. Các phép toán bitwise hoạt động trên biểu diễn cơ số 2, trong khi máy tính này hiển thị kết quả bằng cơ số 10.
Câu hỏi thường gặp
Phép OR bit có giống phép cộng không? Không. OR không bao giờ có nhớ. \(1 \mathbin{|} 1\) vẫn bằng 1, trong khi \(1 + 1\) sẽ nhớ thành 10 ở hệ nhị phân. Hai phép tính chỉ cho kết quả giống nhau khi các toán hạng không có bit 1 nào trùng vị trí.
Còn số âm thì sao? Số nguyên âm dùng cách biểu diễn bù hai (two's complement), nên phép OR áp dụng cùng quy tắc bit qua cả các bit dấu.
Phép OR hữu ích ở đâu? OR thường được dùng để bật (thiết lập) các bit cụ thể hoặc kết hợp các giá trị cờ (flag), chẳng hạn như gộp các mặt nạ quyền (permission mask).