Các toán tử Bitwise được Pascal hỗ trợ được liệt kê trong bảng sau. Giả sử biến A giữ 60 và biến B giữ 13, thì -
Nhà điều hành |
Sự miêu tả |
Thí dụ |
& |
Toán tử AND nhị phân sao chép một bit vào kết quả nếu nó tồn tại trong cả hai toán hạng. |
(A & B) sẽ cho 12, là 0000 1100 |
| |
Toán tử OR nhị phân sao chép một bit nếu nó tồn tại trong một trong hai toán hạng. |
(A | B) sẽ cho 61, là 0011 1101 |
! |
Toán tử OR nhị phân sao chép một bit nếu nó tồn tại trong một trong hai toán hạng. Của nó giống như | nhà điều hành. |
(A! B) sẽ cho 61, là 0011 1101 |
~ |
Toán tử bổ sung số nhị phân là một ngôi và có tác dụng 'lật' các bit. |
(~ A) sẽ cho -61, là 1100 0011 ở dạng phần bù của 2 do một số nhị phân có dấu. |
<< |
Toán tử Shift trái nhị phân. Giá trị của toán hạng bên trái được di chuyển sang trái bằng số bit được chỉ định bởi toán hạng bên phải. |
A << 2 sẽ cho 240, là 1111 0000 |
>> |
Toán tử Shift phải nhị phân. Giá trị toán hạng bên trái được di chuyển sang phải bằng số bit được chỉ định bởi toán hạng bên phải. |
A >> 2 sẽ cho 15, là 0000 1111 |
Xin lưu ý rằng các cách triển khai khác nhau của Pascal khác nhau trong các toán tử bitwise. Tuy nhiên, Free Pascal, trình biên dịch chúng tôi đã sử dụng ở đây, hỗ trợ các toán tử bitwise sau:
Người điều hành |
Hoạt động |
không phải |
Bitwise KHÔNG |
và |
Bitwise VÀ |
hoặc là |
Bitwise HOẶC |
xor |
Bitwise độc quyền HOẶC |
shl |
Dịch chuyển bit sang trái |
nhún vai |
Dịch chuyển bit sang phải |
<< |
Dịch chuyển bit sang trái |
>> |
Dịch chuyển bit sang phải |
Ví dụ sau minh họa khái niệm -
program beBitwise;
var
a, b, c: integer;
begin
a := 60; (* 60 = 0011 1100 *)
b := 13; (* 13 = 0000 1101 *)
c := 0;
c := a and b; (* 12 = 0000 1100 *)
writeln('Line 1 - Value of c is ', c );
c := a or b; (* 61 = 0011 1101 *)
writeln('Line 2 - Value of c is ', c );
c := not a; (* -61 = 1100 0011 *)
writeln('Line 3 - Value of c is ', c );
c := a << 2; (* 240 = 1111 0000 *)
writeln('Line 4 - Value of c is ', c );
c := a >> 2; (* 15 = 0000 1111 *)
writeln('Line 5 - Value of c is ', c );
end.
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is -61
Line 4 - Value of c is 240
Line 5 - Value of c is 15