Ekspresi logis ( a && b )
(keduanya a
dan b
memiliki nilai boolean) dapat ditulis seperti !(!a || !b)
, misalnya. Bukankah ini berarti &&
"tidak perlu"? Apakah ini berarti bahwa semua ekspresi logis hanya dapat dibuat menggunakan ||
dan !
?
logic
logical-operators
JakeTheNake
sumber
sumber
A and B == !A nor !B == !(!A or !B)
. Demikian jugaA or B == !A nand !B == !(!A and !B)
. Jelas melewati nilai yang sama untuk kedua input dari NAND atau NOR akan memberikan hasil yang sama dengan TIDAK sederhana. XOR dan XNOR juga dimungkinkan tetapi lebih kompleks. Lihat teorema De MorganJawaban:
Ya, seperti yang ditunjukkan oleh jawaban lain, sekumpulan operator terdiri dari
||
dan!
secara fungsional lengkap . Berikut ini adalah bukti konstruktif dari itu, menunjukkan bagaimana menggunakannya untuk mengekspresikan semua enam belas kemungkinan koneksi logis antara variabel booleanA
danB
:A || !A
!A || !B
!B || A
!A || B
A || B
!B
!A
!(!A || B) || !(A || !B)
!(!A || !B) || !(A || B)
A
B
!(A || B)
!(!A || B)
!(!B || A)
!(!A || !B)
!(A || !A)
Perhatikan bahwa NAND dan NOR sendiri secara fungsional telah selesai (yang dapat dibuktikan menggunakan metode yang sama di atas), jadi jika Anda ingin memverifikasi bahwa satu set operator secara fungsional selesai, itu cukup untuk menunjukkan bahwa Anda dapat mengekspresikan NAND atau NOR dengan itu.
Berikut ini adalah grafik yang menunjukkan diagram Venn untuk masing-masing penghubung yang tercantum di atas:
[ sumber ]
sumber
||
bukan|
) atau efek samping (relevan karena perluasan dari true, false, XOR dan XNOR mengevaluasi argumen mereka lebih sering daripada konstanta atau operator asli lakukan).!(!A || !B)
memiliki hubung pendek dan jumlah evaluasi yang sama denganA && B
). Saya tidak berpikir Anda bisa melakukan ini untuk XOR dan XNOR tanpa konstruksi tambahan (misalnyaa ? !b : b
), dan benar atau salah bukanlah masalah jika Anda dapat menyimpan nilai, karena Anda dapat memulai program Anda dengan mendefinisikantrue
danfalse
menggunakan beberapa variabel boolean dummy.Apa yang Anda gambarkan adalah kelengkapan fungsional .
Ini menggambarkan seperangkat operator logis yang cukup untuk "mengungkapkan semua tabel kebenaran yang mungkin". Set operator Java Anda, {
||
,!
}, cukup; itu sesuai dengan set {∨, ¬}, yang terdaftar di bawah bagian "Minimal set lengkap operator fungsional".Himpunan semua tabel kebenaran berarti semua set yang mungkin dari 4 nilai boolean yang dapat merupakan hasil operasi antara 2 nilai boolean. Karena ada 2 nilai yang mungkin untuk boolean, ada 2 4 , atau 16, tabel kebenaran yang mungkin.
Berikut adalah tabel angka-angka tabel kebenaran (0-15),
||
dan!
kombinasi yang menghasilkannya, dan deskripsi.Ada banyak set lengkap yang berfungsi seperti itu, termasuk set elemen satu {NAND} dan {NOR}, yang tidak memiliki operator tunggal yang sesuai di Jawa.
sumber
Iya.
Semua gerbang logika dapat dibuat dari gerbang NOR.
Karena gerbang NOR dapat dibuat dari TIDAK dan OR, hasilnya mengikuti.
sumber
[citation-needed]
tanda di sana.Luangkan waktu untuk membaca Hukum DeMorgan jika Anda bisa.
Anda akan menemukan jawabannya di bacaan di sana, serta referensi ke bukti logis.
Tetapi pada dasarnya, jawabannya adalah ya.
EDIT : Sebagai penjelasan, poin saya adalah bahwa seseorang dapat secara logis mengambil ekspresi ATAU dari ekspresi DAN, dan sebaliknya. Ada lebih banyak hukum juga untuk kesetaraan dan kesimpulan logis, tapi saya pikir ini yang paling tepat.
EDIT 2 : Berikut ini adalah bukti melalui tabel kebenaran yang menunjukkan kesetaraan logis dari ungkapan berikut.
Hukum DeMorgan:
!(!A || !B) -> A && B
sumber
NAND dan NOR bersifat universal, mereka dapat digunakan untuk membangun operasi logis yang Anda inginkan di mana saja; operator lain tersedia dalam bahasa pemrograman untuk membuatnya mudah untuk menulis dan membuat kode yang dapat dibaca.
Juga semua operasi logis yang diperlukan untuk kabel di sirkuit juga dikembangkan menggunakan IC hanya NAND atau NOR.
sumber
Ya, menurut aljabar Boolean, fungsi Boolean apa pun dapat dinyatakan sebagai jumlah minterm atau produk maxterms, yang disebut bentuk normal kanonik . Tidak ada alasan mengapa logika seperti itu tidak dapat diterapkan pada operator yang sama yang digunakan dalam ilmu komputer.
https://en.wikipedia.org/wiki/Canonical_normal_form
sumber