8.16.2009

Boolean Logic

ada pendahuluannya nih..

control dan embedded system kerapkali berhubungan dengan bit individu buat mengatur operasi program yang spesifik atau untuk menentukan kondisi pada bagian suatu sistem. contohnya, suatu bit on untuk lampu atau aktivasi relay atau mungkin bit off untuk mengindikasikan suatu switch/saklar dalam keadaan on.

Boolean Logic, dikembangkan oleh George Boole (1815-1864), sering digunakan untuk menyaring penetapan suatu status sistem atau untuk men-set bit atau meng-clear bit. Boolean logic itu salah satu cara sederhana membandingkan bit-bit individual. ini digunakan oleh yang namanya operators untuk menentukan bagaimana bit-bit itu dibandingkan. mereka mensimulasikan gerbang-gerbang yang akan anda lihat di bagian hardware nanti.(ga tau nantinya kapan :)).

contoh dibawah ini hanya akan menunjukkan 2 input dan 1 output untuk setiap gerbang, walaupun gerbang-gerbang bisa lebih dari itu. gerbang-gerbang logika juga sering dikombinasikan pada bentuk2 logic yang lebih kompleks. suatu mikroprosesor modern dapat mengandung angka-angka besar dengan banyak input dan banyak kombinasi-kombinasi yang bervariasi. untuk catatan, istilah on,high, dan 1 akan dianggap sebagai keadaan logika yang sama, serta off,low, dan 0 merupakan keadaan logika yang sama.

Operator-operator yang sering kali digunakan adalah AND dan OR.
Operasi AND itu dimana jika hanya semua inputnya on, maka oiutputnya akan on. jika salah satu inputnya off, maka outputnya akan off. akan mudah melihat semua kombinasi input2 dengan menggunakan tabel kebenaran seperti dibawah ini.
(disetiap bagian bawah tabel terdapat simbol gerbang logikanya)

AND (all high = high, else low)
Input 1 Input 2 Output
0 0 0
0 1 0
1 0 0
1 1 1
Control And Embedded Systems

sedangkan operasi OR itu kalo salah satu inputnya on, maka outputnya akan on. berikut tabel kebenarannya

OR (any high = high, else low)
Input 1 Input 2 Output
0 0 0
0 1 1
1 0 1
1 1 1
Control And Embedded Systems

ada 2 operasi logika yang sama seperti diatas, tapi dengan output yang di-NOT-kan (inverted output), yaitu NAND dan NOR.

NAND(Not AND) itu jika dan hanya jika semua inputnya on, maka outputnya akan off , dan jika salah satu inputnya off, maka outputnya akan on (kebalikannya dari operasi AND). dan inilah tabel kebenarannya :

NAND (all high = low, else high)
Input 1 Input 2 Output
0 0 1
0 1 1
1 0 1
1 1 0
Control And Embedded Systems

Sedangkan operasi NOR itu jika salah satu inputnya on, maka outputnya akan off (kebalikannya dari OR). Lihat tabel kebenaran :

NOR (any high = low, else high)
Input 1 Input 2 Output
0 0 1
0 1 0
1 0 0
1 1 0
Control And Embedded Systems

untuk operasi OR, ada variasi operasi yang disebut Exclusive OR atau XOR. operasi ini akan mempunyai output on jika input-inputnya berbeda. lihat aja tabel kebenarannya dibawah ini :

XOR (different = high, same = low)
Input 1 Input 2 Output
0 0 0
0 1 1
1 0 1
1 1 0
Control And Embedded Systems

ada satu lagi, operasi INVERTER atau NOT, yang hanya mempunyai satu input, dimana outputnya merupakan kebalikan dari inputnya. contohnya jika inputnya berlogik 1, maka outputnya akan berlogik 0. lihatlah tabel kebenarannya :
NOT (inverter)
Input = 1 Output = 0
Input = 0 Output = 1
Control And Embedded Systems

dalam bahasa C, digunakan simbol-simbol untuk menandakan operasi dari boolean. mereka adalah :

Logical Operation Abbreviation Symbol
And AND &
Or OR |
Exclusive OR XOR ^
Inversion NOT ~

sudah hal biasa dalam bahasa C untuk melakukan operasi logika dalam byte atau word. Kombinasi dari kondisi-kondisi on dan off adalah faktor penting yang menentukan kondisi tersebut, dan penggunaan kombinasi logika sebagai output-output bisa digunakan untuk menyertakan tindakan yang kompleks. untuk menentukan hasil saat operasi logika diterapkan untuk tipe variabel yang lebih besar, sederhanya bekerja dengan satu bit pada waktu yang sama. lihat beberapa contoh dibawah. angka-angkanya dalam hexadesimal dan binari. pada bagian atas contoh dibawah ini menunjukkan ilustrasi hasil operasi dalam notasi heksadesimal dan simbol yang digunakan dalam bahasa C. itu bukanlah pernyataan dalam bahasa C, tapi hanyalah ilustrasi. Contoh pertama menunjukkan bagaimana hasil ditentukan 1 bit pada waktu yang sama.

0xC1 & 0xEA = 0xC0 (maksudnya 0xC1 AND 0xEA = 0xC0)

0xC1 11000001 (kedua nibble itu adalah 1100 = 12 = 0xC dan 0001 = 1 = 0x1)

0xEA 11101010

0xC0 11000000

||||||||_ 1 AND 0 = 0

|||||||__ 0 AND 1 = 0

||||||___ 0 AND 0 = 0

|||||____ 0 AND 1 = 0

||||_____ 0 AND 0 = 0

|||______ 0 AND 1 = 0

||_______ 1 AND 1 = 1

|________ 1 AND 1 = 1

0x00 & 0x86 = 0x00 (maksudnya 0x00 AND 0x86 = 0x00)
0x00 00000000
0x86 10000110
0x00 00000000 (pikirkan, "bit-bit ini akan on hanya jika kedua bit diatasnya

(yang di-AND-kan) on.")

0x88 & 0xE0 = 0x80 (maksudnya 0x88 AND 0xE0 = 0x80)
0x88 10001000
0xE0 11100000
0x80 10000000




0xC0 | 0xAD = 0xED (maksudnya 0xC0 OR 0xAD = 0xED)
0xC0 11000000
0xAD 10101101
0xED 11101101 (ingat, "bit ini akan on jika salah satu
dari bit-bit yang diatasnya on.")

0xAD | 0xEF = 0xEF (maksudnya 0xAD OR 0xEF = 0xEF)
0xAD 10101101
0xEF 11101111
0xEF 11101111

0xC4 | 0x84 = 0xC4 (maksudnya 0xC4 OR 0x84 = 0xC4)
0xC4 11000100
0x84 10000100
0xC4 11000100




0xD4 ^ 0x8D = 0x59 (maksudnya 0xD4 XOR 0x8D = 0x59)
0xD4 11010100
0x8D 10001101
0x59 01011001 (ingat, "bit ini akan on hanya jika kedua bit diatasnya berbeda")

0xDA ^ 0x87 = 0x5D (maksudnya 0xDA XOR 0x87 = 0x5D)
0xDA 11011010
0x87 10000111
0x5D 01011101

0xAB ^ 0xFC = 0x57 (maksudnya 0xAB XOR 0xFC = 0x57)
0xAB 10101011
0xFC 11111100
0x57 01010111




~0x86 = 0x79 (maksudnya 0x86 inverted = 0x79)
0x86 10000110
0x79 01111001 (inget, "bit-bit ini merupakan kebalikan dari bit yang ada diatasnya.")

~0xC1 = 0x3E (maksudnya 0xC1 inverted = 0x3E)
0xC1 11000001
0x3E 00111110

~0xEA = 0x15 (maksudunya 0xEA inverted = 0x15)
0xEA 11101010
0x15 00010101

masih banyak lagi contohnya, coba bikin sendiri :D

sampai sini dulu ah, lanjutin nanti....

next : Adress lines dan port.

0 comment: