Toán tử xử lý bit – Bitwise operators
Toán tử | ^ | & ~ << >> |
Có thể được thực hiện như là một hàm toàn cục không ? | Có |
Có thể được thực hiện như là một hàm thành việc của lớp không ? | Có |
Kiểu dữ liệu trả về | Tùy vào ngữ cảnh |
Tất cả các toán tử trên, ngoại trừ các ~, đều là toán tử nhị phân.
Chúng tôi đã sửa lại ví dụ trước một chút →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <iostream> using namespace std; class V { public: int vec[2]; V(int a0, int a1) { vec[0]=a0; vec[1]=a1; } V operator>>(int arg) { V res(vec[0],vec[1]); for(int i = 0; i < 2; i++) { res.vec[i] >>= arg; } return res; } }; int operator~(V &arg) { int res = 1; for(int i = 0; i < 2; i++) { res *= arg.vec[i]; } return res; } int main(void) { V v(15, 7); v = v >> 1; cout << "(" << v.vec[0] << ", " << v.vec[1] << ")" << endl; cout << ~v << endl; return 0; } |
Bây giờ lớp V có thể thực hiện phép dịch bit phải cho các phần tử của nó.
Chương trình tạo ra kết quả sau:
1 2 |
(7, 3) 21 |