Pascal - Operator Bit

Operator Bitwise yang didukung oleh Pascal tercantum dalam tabel berikut. Asumsikan variabel A memiliki 60 dan variabel B memiliki 13, maka -

Operator Deskripsi Contoh
& Biner AND Operator menyalin sedikit ke hasil jika ada di kedua operan. (A & B) akan menghasilkan 12, yaitu 0000 1100
| Biner ATAU Operator menyalin sedikit jika ada di salah satu operan. (A | B) akan menghasilkan 61, yaitu 0011 1101
! Biner ATAU Operator menyalin sedikit jika ada di salah satu operan. Ini sama dengan | operator. (A! B) akan menghasilkan 61, yaitu 0011 1101
~ Operator Pelengkap Binary Ones adalah unary dan memiliki efek bit 'membalik'. (~ A) akan memberikan -61, yaitu 1100 0011 dalam bentuk komplemen 2 karena bilangan biner bertanda.
<< Operator Binary Left Shift. Nilai operan kiri dipindahkan ke kiri dengan jumlah bit yang ditentukan oleh operan kanan. A << 2 akan menghasilkan 240, yaitu 1111 0000
>> Operator Pergeseran Kanan Biner. Nilai operan kiri dipindahkan ke kanan dengan jumlah bit yang ditentukan oleh operan kanan. A >> 2 akan menghasilkan 15, yaitu 0000 1111

Harap dicatat bahwa implementasi Pascal berbeda dalam operator bitwise. Free Pascal, kompilator yang kami gunakan di sini, bagaimanapun, mendukung operator bitwise berikut -

Operator Operasi
tidak Bitwise TIDAK
dan Bitwise DAN
atau Bitwise ATAU
xor Eksklusif bitwise ATAU
shl Sedikit bergeser ke kiri
Shr Sedikit bergeser ke kanan
<< Sedikit bergeser ke kiri
>> Sedikit bergeser ke kanan

Contoh berikut menggambarkan konsep -

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.

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

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