Phép toán Bitwise
Bù lên một
Bù giá trị của biến lên một. Giá trị của biểu thức chứa 1 ở tất cả các chữ số nơi giá trị biến chứa 0, và 0 ở tất cả các chữ số nơi biến chứa 1.
b = ~n;
Ví dụ:
char a='a',b;
b=~a;
Print("a = ",a, " b = ",b);
// Kết quả sẽ là:
// a = 97 b = -98
2
3
4
5
Dịch phải
Biểu diễn nhị phân của x được dịch sang phải y chữ số. Nếu giá trị cần dịch thuộc kiểu không dấu, phép dịch phải logic được thực hiện, tức là các bit bên trái được giải phóng sẽ được điền bằng số không.
Nếu giá trị cần dịch thuộc kiểu có dấu, phép dịch phải số học được thực hiện, tức là các chữ số bên trái được giải phóng sẽ được điền bằng giá trị của bit dấu (nếu số dương, giá trị bit dấu là 0; nếu số âm, giá trị bit dấu là 1).
x = x >> y;
Ví dụ:
char a='a',b='b';
Print("Before: a = ",a, " b = ",b);
//--- dịch sang phải
b=a>>1;
Print("After: a = ",a, " b = ",b);
// Kết quả sẽ là:
// Before: a = 97 b = 98
// After: a = 97 b = 48
2
3
4
5
6
7
8
Dịch trái
Biểu diễn nhị phân của x được dịch sang trái y chữ số, các chữ số bên phải được giải phóng được điền bằng số không.
x = x << y;
Ví dụ:
char a='a',b='b';
Print("Before: a = ",a, " b = ",b);
//--- dịch sang trái
b=a<<1;
Print("After: a = ",a, " b = ",b);
// Kết quả sẽ là:
// Before: a = 97 b = 98
// After: a = 97 b = -62
2
3
4
5
6
7
8
Không nên dịch số bit lớn hơn hoặc bằng độ dài của biến được dịch, vì kết quả của phép toán như vậy là không xác định.
Phép toán Bitwise AND
Phép toán Bitwise AND của biểu diễn nhị phân của x và y. Giá trị của biểu thức chứa 1 (TRUE) ở tất cả các chữ số nơi cả x và y đều chứa giá trị khác không, và chứa 0 (FALSE) ở tất cả các chữ số khác.
b = ((x & y) != 0);
Ví dụ:
char a='a',b='b';
//--- Phép toán AND
char c=a&b;
Print("a = ",a," b = ",b);
Print("a & b = ",c);
// Kết quả sẽ là:
// a = 97 b = 98
// a & b = 96
2
3
4
5
6
7
8
Phép toán Bitwise OR
Phép toán Bitwise OR của biểu diễn nhị phân của x và y. Giá trị của biểu thức chứa 1 ở tất cả các chữ số nơi x hoặc y không chứa 0, và chứa 0 ở tất cả các chữ số khác.
b = x | y;
Ví dụ:
char a='a',b='b';
//--- Phép toán OR
char c=a|b;
Print("a = ",a," b = ",b);
Print("a | b = ",c);
// Kết quả sẽ là:
// a = 97 b = 98
// a | b = 99
2
3
4
5
6
7
8
Phép toán Bitwise Exclusive OR
Phép toán Bitwise Exclusive OR (XOR) của biểu diễn nhị phân của x và y. Giá trị của biểu thức chứa 1 ở tất cả các chữ số nơi x và y có giá trị nhị phân khác nhau, và chứa 0 ở tất cả các chữ số khác.
b = x ^ y;
Ví dụ:
char a='a', b='b';
//--- Phép toán XOR
char c=a^b;
Print("a = ",a," b = ",b);
Print("a ^ b = ",c);
// Kết quả sẽ là:
// a = 97 b = 98
// a ^ b = 3
2
3
4
5
6
7
8
Các phép toán Bitwise chỉ được thực hiện với số nguyên.
Xem thêm