Skip to main content

Các toán tử bitwise là gì?

Trong một chương trình máy tính, các toán tử bitwise là người vận hành để thao tác các mẫu bit trong các biểu thức.BitWise và, hoặc, độc quyền hoặc (XOR), không, dịch chuyển phải và ca trái là các hoạt động phổ biến.Hầu hết các ngôn ngữ lập trình máy tính bao gồm tất cả sáu nhà khai thác này.Chúng thường được sử dụng để thiết lập, xóa hoặc lật các bit riêng lẻ trong các chương trình kiểm soát phần cứng máy tính.Các toán tử bitwise cũng thường được sử dụng trong các thuật toán mã hóa và nén dữ liệu. Các toán tử bitwise phổ biến thường được biểu diễn một cách tượng trưng trong các ngôn ngữ lập trình như C, C ++ và Java.Chúng được sử dụng trong các biểu thức giống như các toán tử số học như cộng hoặc dấu trừ.Toán tử bitwise và được biểu diễn với ampersand

, hoặc với đường ống

| và xor với caret ^.Không, còn được gọi là toán tử bổ sung, được chỉ định với một tilde ~.Toán tử dịch chuyển bên phải sử dụng một ô đôi chỉ vào bên phải .Ngược lại, dịch chuyển bên trái được biểu thị bằng một cỗ xe kép phía bên trái.Java bao gồm một hoạt động thay đổi bên phải khác, được hiển thị với một hình ba xe trỏ phải .Không, ca bên phải và ca bên trái chỉ có một toán hạng thực sự;Giá trị thứ hai trong các hoạt động thay đổi là số lượng bit.Để hiểu rõ hơn về cách các nhà khai thác bitwise hoạt động, một cá nhân có thể hình dung các toán hạng của họ dưới dạng chữ số nhị phân.Ví dụ, toán tử bổ sung lật từng bit của một toán hạng duy nhất của nó sang trạng thái đối diện.Một người trở thành số không và số 0 trở thành một.Phần bổ sung của giá trị nhị phân 8 bit 00110101 là 11001010. Toán tử có hai toán hạng.Từng bit, một hoạt động logic và hoạt động được thực hiện bằng một bit tương ứng từ mỗi toán hạng.Kết quả của mỗi hoạt động bit được đặt ở vị trí bit đó của kết quả tổng thể.Ví dụ, toán tử và toán tử sẽ xử lý bit 7 của một toán hạng với bit 7 của toán hạng khác.Kết quả sẽ được lưu trữ trong bit 7 của kết quả tổng thể.Trong một hoạt động và hoạt động, cả hai bit toán hạng phải là một để kết quả là một, nếu không thì kết quả bằng không.Ví dụ: nếu các giá trị nhị phân 8 bit của các toán hạng là 00110101 và 11110000, kết quả sẽ là 00110000. Sử dụng phổ biến và toán tử là không thể loại bỏ các bit cụ thể trong kết quả.Điều này được thực hiện bằng cách đặt các số 0 ở các vị trí bit đó trong một trong các toán hạng. Trong một hoạt động hoặc cả hai bit toán hạng phải là số 0 để kết quả bằng không;Nếu không, kết quả là một.Việc sử dụng phổ biến của toán tử là đặt một số bit của kết quả thành một.Điều này được thực hiện bằng cách đặt các vị trí vào các vị trí bit đó trong một trong các toán hạng.Đối với hoạt động XOR, kết quả bằng không nếu cả hai bit toán hạng bằng không hoặc nếu cả hai bit toán hạng là một mdash; nếu không, kết quả là một.vị trí bit.Một sự thay đổi bên phải logic di chuyển số 0 vào bit ngoài cùng bên trái như là một phần của sự thay đổi.Một ca làm việc bên phải số học sao chép bit mdash ngoài cùng bên trái; bit dấu hiệu mdash; trước khi chuyển sang cùng một vị trí sau khi thay đổi.Bit ban đầu cũng được thay đổi ngay với phần còn lại.Một trong hai loại dịch chuyển trái di chuyển số 0 vào bit ngoài cùng bên phải. Khi một toán hạng được dịch chuyển phải, bit ngoài cùng bên phải trước khi thay đổi đơn giản là vứt bỏ.Tương tự, bit ngoài cùng bên trái trước khi thay đổi bên trái.Nó không bao quanh ở đầu kia của toán hạng. Các hoạt động thay đổi bitwise phụ thuộc vào ngôn ngữ và thực hiện.Ví dụ: trong C và C ++,

Thực hiện các dịch chuyển logic nếu toán hạng là một số nguyên không dấu.Nếu toán hạng là một số nguyên có chữ ký, có khả năng là một sự thay đổi số học sẽ được thực hiện thay thế.Trong Java, tất cả các toán hạng được coi là có chữ ký và các thay đổi số học làLuôn luôn được thực hiện với và.Toán tử << được sử dụng cho một sự thay đổi bên phải logic, nhưng vẫn có thể vô tình thực hiện thay đổi đúng số học thay thế mà không cần đánh máy cẩn thận.Một số không dấu.Các toán tử bitwise và hằng số số ở giữa một biểu thức phức tạp có thể không được đánh giá như dự đoán.Phải cẩn thận để chỉ định kích thước và bản chất đã ký/không dấu của từng số lượng trong biểu thức.Điều này có thể được thực hiện với việc đánh máy cẩn thận hoặc gán tạm thời cho các loại biến cụ thể trong mã chương trình.