Pascal - Toán tử Bit

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
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

Language