Komputer Tingkat Kabupaten/Kota 2007″. Soal kali ini terkait dengan operasi OR dan AND
pada operand berbentuk bilangan integer. Wah apa lagi tuh ??? Lho bukannya operasi OR and
AND hanya bisa digunakan pada operand berbentuk boolean (TRUE atau FALSE)? Wah…
ternyata ndak tuh, simak detail dari artikel ini ya…
const
xmin = -10;
xmax = 10;
ymin = -10;
ymax = 10;
code := c;
end;
Pertanyaan :
Perintah writeln(code(-12, -12) AND code(20, 5)) akan mencetak harga berapakah?
Jawab :
OK… sebelum kita jawab pertanyaan ini, perhatikan bahwa dalam function code() terdapat
operator OR. Operand OR tidak harus berupa boolean TRUE atau FALSE namun juga bisa
berupa integer. Operator OR untuk operand bilangan integer merupakan operasi OR secara
bitwise (diproses bit demi bit, dengan 1 identik bernilai TRUE dan 0 bernilai FALSE) dari
bilangan binernya.
Berapakah hasil 2 OR 1?
2 = 10 (biner)
1 = 01 (biner)
----------- OR
11 -> bilangan biner dari 3
Berapakah hasil 3 OR 1?
3 = 11 (biner)
1 = 01 (biner)
----------- OR
11 -> bilangan biner dari 3
Berapakah 4 OR 5?
4 = 100 (biner)
5 = 101 (biner)
----------- OR
101 -> bilangan biner dari 5.
Nah akan kita akan selesaikan soal di atas menggunakan konsep tersebut. Terlebih dahulu
operand code(-12, -12) pada operasi ‘code(-12, -12) AND code(20, 5)’ akan diselesaikan
code = c = 12
----------------------------------------
Sehingga diperoleh hasil dari code(-12, -12) adalah 12. Selanjutnya akan diproses untuk code(20,
5).
Selanjutnya bagaimana dengan operasi ‘code(-12, -12) AND code(20, 5)’ atau dalam hal ini ‘12
AND 1′? Pada prinsipnya operasi AND pada bilangan integer sama dengan operasi OR, yaitu
dilakukan operasi boolean AND secara bit per bit dari bilangan binernya. Dengan demikian
proses 12 AND 1 adalah:
12 = 1100 (biner)
1 = 0001 (biner)
----------------- AND
0000 -> biner dari 0
Dari perhitungan di atas hasil dari perintah ‘writeln(code(-12, -12) and code(20, 5))’ akan
mencetak 0.
Nah… berdasarkan contoh ini, Anda dapat mencoba untuk menebak output apa yang akan
muncul jika diberikan perintah sebagai berikut: