Bitwise Operator dalam Pascal

Data dalam komputer disimpan dalam bentuk biner karena komputer hanya bisa membedakan hidup (1) dan mati (0). Tiap digit dalam bilangan biner disebut bit. Bagi yang belum tahu, bilangan biner adalah bilangan berbasis dua yang hanya terdiri dari 0 dan 1. Bilangan berbasis sepuluh yang ditampilkan di komputer sebenarnya juga disimpan dalam bentuk bilangan biner. Saya tidak akan membahas cara mengubah bilangan basis sepuluh menjadi bilangan biner karena saya sudah pernah membahas ini sebelumnya saat membahas tentang bahasa C. Operator yang digunakan dalam bahasa Pascal untuk bilangan biner, yaitu :
  1. not : untuk membalikkan nilai biner dari 1 menjadi 0, atau 0 menjadi 1. Hasilnya tergantung rentang nilai tipe datanya.
    Contoh :
    1. not (16) => not (010000) => 11101111 
  2. shr / shift right : untuk menggeser beberapa bit ke kanan; dan bit yang paling kanan akan dihilangkan.
    Contoh : 
    1. 2 shr 1 => 000010 shr 1 => 000001 = 1
    2. 3 shr 1 => 000011 shr 1 => 000001 = 1
    3. 15 shr 2 => 001111 shr 2 => 000011 = 3
  3. Shl / shift left : untuk menggeser beberapa bit ke kiri dan menambahkan 0 sebagai bit terakhir; dan bit yang paling kiri akan dihilangkan.
  4. Or : Fungsinya mirip dengan operator logika "Or" hanya saja yang diproses bukan true (1) dan false (0) melainkan bit yang berada dua variabel di posisi yang sama. Jika bit di posisi yang sama, salah satunya adalah "1", maka bit di posisi tersebut pada variabel hasil adalah "1".
    Contoh :
    1. 000001 or 000010 => 000011
    2. 000001 or 000011 => 000011
    3. 001101 or 000011 => 001111
  5. And : Fungsinya mirip dengan operator logika "And" hanya saja yang diproses bukan true (1) dan false (0) melainkan bit yang berada dua variabel di posisi yang sama. Jika bit di posisi yang sama, salah satunya adalah "0", maka bit di posisi tersebut pada variabel hasil adalah "0".
    Contoh :
    1. 000001 or 000010 => 000000
    2. 000001 or 000011 => 000001
    3. 001101 or 000011 => 000001
  6. Xor : Fungsinya mirip dengan operator logika "Or" hanya saja yang diproses bukan true (1) dan false (0) melainkan bit yang berada dua variabel di posisi yang sama. Jika bit di posisi yang sama nilainya berbeda, maka bit di posisi tersebut pada variabel hasil adalah "1". Jika nilainya sama maka hasilnya adalah 0.
    Contoh :
    1. 000001 xor 000010 => 000011
    2. 000001 xor 000011 => 000010
    3. 001101 xor 000011 => 001110
Berikut ini contoh kode program untuk shr, shl dan not.

Program Biner;
uses crt;
var a: Byte;
Begin
    clrscr;
    a:=5;
    writeln('not ', a, ' = ', not a);
    writeln(a, ' shr 1 = ', a shr 1);
    writeln(a, ' shl 1 = ', a shl 1);
    readln;
end.

Berikut ini adalah contoh kode program untuk and, or dan xor.

Program Biner;
uses crt;
var a, b : Byte;
Begin
    clrscr;
    a:=5;
    b:=3;
    writeln(a, ' and ', b, ' = ', a and b);
    writeln(a, ' or ', b, ' = ', a or b);
    writeln(a, ' xor ', b, ' = ', a xor b);
    readln;
end.

Btw, secara umum, operator aritmetika lebih didahulukan dibandingkan dengan operator bitwise. Selain itu, operator bitwise hasilnya akan berbeda untuk bilangan yang punya rentang nilai negatif dan bilangan dengan tipe data yang tidak punya rentang nilai negatif.