Temel mantıksal işlemler (ve, veya, xor, değil). Mantıksal kapı özel veya X veya mantıksal işlem

Her şey dijital mikro devreler aynı mantıksal öğelerden oluşur - herhangi bir dijital düğümün "yapı taşları". Şimdi onlardan bahsedeceğiz.

mantıksal öğe Birden fazla girişi ve bir çıkışı olan bir devredir. Girişlerdeki sinyallerin her durumu, çıkıştaki belirli bir sinyale karşılık gelir.

Peki unsurlar nelerdir?

"VE" öğesi (VE)

Aksi takdirde "konjonktör" olarak adlandırılır.

Nasıl çalıştığını anlamak için, herhangi bir giriş sinyali kombinasyonu için çıkış durumlarını listeleyen bir tablo çizmeniz gerekir. Böyle bir tablo denir " doğruluk şeması". Doğruluk tabloları, mantık devrelerinin çalışmasını tanımlamak için dijital teknolojide yaygın olarak kullanılmaktadır.

AND öğesi ve doğruluk tablosu şöyle görünür:

Çünkü hem Rus hem de burjuva teknolojisi ile iletişim kurmanız gerekecek. dokümantasyon, standartlarımıza ve bizim standartlarımıza göre olmayan öğelerin geleneksel grafik tanımlarını (UGO) vereceğim.

Doğruluk tablosuna bakarız ve beyindeki prensibi netleştiririz. Bunu anlamak zor değil: “VE” öğesinin çıkışındaki bir birim, yalnızca her iki girişe de birimler sağlandığında görünür. Bu, öğenin adını açıklar: birimler bir girişte AND, diğer girişte AND olmalıdır.

Biraz farklı bakarsanız şunu söyleyebiliriz: Girişlerinden en az birinin sıfır olması durumunda "AND" öğesinin çıkışı sıfır olacaktır. Hatırlıyoruz. Devam et.

VEYA öğesi (VEYA)

Başka bir deyişle, adı "ayırıcı".

hayran:

Yine, isim kendisi için konuşur.

Bir birim birine VEYA diğerine VEYA her iki girişe aynı anda beslendiğinde çıkışta bir birim görünür. Bu eleman aynı zamanda negatif mantık için bir "AND" elemanı olarak da adlandırılabilir: çıkışında bir sıfır, yalnızca bir ve ikinci girişe sıfırlar verilirse oluşur.

"DEĞİL" öğesi

Daha sıklıkla "inverter" olarak adlandırılır.

Çalışmaları hakkında bir şey söylemeye gerek var mı?

"NAND" öğesi

NAND geçidi "AND" ile tamamen aynı şekilde çalışır, sadece çıkış sinyali tamamen zıttır. “AND” öğesinin çıktıda “0” olması gerektiğinde, “AND-NOT” öğesinin bir tane olması gerekir. Ve tam tersi. Bunu, elemanın eşdeğer devresinden anlamak kolaydır:

"VEYA-DEĞİL" öğesi (NOR)

Aynı hikaye - çıkışında bir invertör bulunan bir VEYA kapısı.

Sıradaki yoldaş biraz daha kurnaz:
Özel VEYA (XOR)

O şöyle:

Gerçekleştirdiği işleme genellikle modulo 2 eklemesi denir. Aslında, dijital toplayıcılar bu öğeler üzerine kuruludur.

Doğruluk tablosuna bakıyoruz. Birimler ne zaman çıkıyor? Bu doğru: girişler farklı sinyaller olduğunda. Birinde - 1, diğerinde - 0. Yani çok kurnaz.

Eşdeğer devre şuna benzer:

Ezberlemek gerekli değildir.

Aslında, bunlar ana mantıksal unsurlardır. Kesinlikle herhangi bir dijital mikro devre, temelleri üzerine inşa edilmiştir. Hatta sevgili Pentium 4'ünüz bile.

Ve son olarak, dijital elemanlar içeren birkaç mikro devre. Mikro devrenin karşılık gelen bacaklarının numaraları, elemanların terminallerinin yanında belirtilmiştir. Burada listelenen tüm IC'lerin 14 bacağı vardır. 7 (-) ve 14 (+) bacaklara güç verilir. Besleme gerilimi - önceki paragraftaki tabloya bakın.


Şebeke Sözdizimi Açıklama
VE A VE B Bağlaç: A ve B Doğruysa, Doğrudur. Aksi takdirde - Yanlış
VEYA A VEYA B Ayrılma: İşlenenlerden herhangi biri True ise, o zaman - True. Aksi takdirde - Yanlış
OLUMSUZ BİR DEĞİL olumsuzlama: A Yanlış ise Doğrudur. Aksi takdirde - Yanlış
XOR bir XOR B İstisna: A Doğruysa veya B Doğruysa, Doğrudur. Aksi takdirde - Yanlış
EQV A EQV B denklik: A, B ile aynı anlama sahipse, Doğrudur. Aksi takdirde - Yanlış
IMP A IMP B Ima: A Doğru ve B Yanlış ise, Yanlış'tır. Aksi takdirde - Doğru

Boole sonucu olan herhangi bir geçerli ifade, mantıksal bir işleç için işlenen olarak ve bir Boole değerine dönüştürülebilen bir sayı olarak kullanılabilir.

Mantıksal bir işlemin sonucu bir Boolean değeridir (veya işlenenlerden en az biri Null ise Null).

Mantıksal VE operatörü

Sözdizimi:
İşlenen_1 VE İşlenen_2


AND operatörü şunları gerçekleştirir: mantıksal bağlaç.

Bu işlem, yalnızca her iki işlenen de True olduğunda True olarak değerlendirilir; aksi takdirde False.


Doğruluk şeması


AND operatörü, birden çok işlenen için kullanılabilir:


(5 3) VE (5 = 6) sonuç Yanlış


İşlenenlerin sayısından bağımsız olarak, mantıksal AND işleminin sonucu yalnızca ifadenin tüm işlenenleri True ise True olur. Aksi takdirde sonuç False olur. İşlenenlerin parantez içine alındığına dikkat edin. VBA önce parantez içindeki her bir işlenenin değerini ve ardından tüm ifadeyi değerlendirir.

Mantıksal VEYA operatörü

Sözdizimi:
İşlenen_1 VEYA İşlenen_2


VEYA operatörü şunları gerçekleştirir: mantıksal ayrılma.

Bu işlemin sonucu, işlenenlerden en az biri True ise True, değilse False olur.


Doğruluk şeması


VEYA operatörü birden çok işlenen için kullanılabilir:


(5 3) VEYA (5 = 6) sonuç Doğru


İşlenenlerin sayısı ne olursa olsun, mantıksal VEYA işleminin sonucu, ifadenin işlenenlerinden en az biri True olarak değerlendirilirse her zaman True olacaktır. Aksi takdirde sonuç False olur.

AND ve OR operatörleri birleştirilebilir:


((5 3)) VEYA (5 = 6) sonuç True olacaktır

Mantıksal DEĞİL operatörü

Sözdizimi:
işlenen DEĞİL


DEĞİL operatörü mantıksal olumsuzlama.

NOT operatörü yalnızca bir işlenen kullanır.


Doğruluk şeması


AND OR NOT operatörleri birleştirilebilir:


((5 3)) OR NOT (5 = 6) sonuç True olacaktır

Mantıksal XOR operatörü

Sözdizimi:
İşlenen_1 XOR İşlenen_2


XOR operatörü mantıksal dışlama.

Bu işlemin sonucu, işlenenler farklı değerlere sahipse True, aksi takdirde False olur.


Doğruluk şeması


((5 3)) OR NOT (5 = 6) XOR (5 = 5) sonucu False olacaktır

Mantıksal operatör EQV

Sözdizimi:
İşlenen_1 EQV İşlenen_2


EQV operatörü operatördür mantıksal denklik.

İşlenenler ise, bu işlemin sonucu True'dur. aynı değerler aksi halde - Yanlış.


Doğruluk şeması


((5 3)) VEYA DEĞİL (5 = 6) EQV (5 = 5) sonucu True olacaktır

Boole operatörü IMP

Sözdizimi:
İşlenen_1 IMP İşlenen_2


IMP operatörü bir boole işlemi gerçekleştirir etkileri.


Doğruluk şeması


((5 3)) OR NOT (5 = 6) IMP (5 = 5) sonucu True olacaktır


Mantıksal operatör IMP, hepsinden daha az sezgiseldir mantıksal operatörler... Neyse ki, kullanmak nadiren gereklidir.

C++. Mantıksal işlemler. Bit düzeyinde mantıksal işlemler. Vardiya işlemleri. XOR işlemi

1. Hangi türler için mantıksal işlemler, bit düzeyinde mantıksal işlemler ve kaydırma işlemleri uygulayabilirsiniz?

Mantıksal işlemler, bit düzeyinde mantıksal işlemler ve kaydırma işlemleri yalnızca tamsayı türlerinin işlenenlerinde kullanılabilir.

2. C/C++'da hangi mantıksal işlemler kullanılır?

C/C++ programlama dilinde aşağıdaki mantıksal işlemler kullanılmaktadır:

  • && - mantıksal "VE";
  • || - mantıksal "VEYA";
  • ! - mantıksal "HAYIR".

Boolean işlemleri false veya true ile sonuçlanır. C++'da false 0, true ise 1 olarak kabul edilir.

Bundan, yanlış olduğu sonucuna varabiliriz< true . Например:

// mantıksal işlemler bool res; res = yanlış< true ; // res = true
3. Mantıksal işlemlerin doğruluk tablosu

Mantıksal işlemlerin doğruluk tablosu && (mantıksal "VE"), || (mantıksal "VEYA"), ! (mantıksal "HAYIR") aşağıdaki gibidir:

C / C ++, false öğesinin 0 olduğunu ve true öğesinin 0 olmadığını varsayar (sıfır olmayan herhangi bir tamsayı değeri).

4. C ++'da mantıksal işlemleri kullanma örnekleri

Örnek 1. Boole ifadesi ile birleştirilmiş Boole işlemi

// mantıksal işlemler bool res; int a, b; // işlem && (VE) a = 8; b = 5; res = a && b; // res = Doğru a = 0; res = a && b; // res = Yanlış // işlem || (VEYA) a = 0; b = 0; res = bir || B; // res = Yanlış b = 7; res = bir || B; // res = Doğru // operasyon! (mantıksal "HAYIR") a = 0; res =!a; // res = Doğru a = 15; res =!a; // res = Yanlış

Örnek 2. Koşullu ifadelerde Boole işlemi. İçinde bir kod parçacığı var mantıksal işlem if koşullu dal deyiminde kullanılır.

// koşullu ifadelerde mantıksal işlemler int a, b; bool res; a = 0; b = 3; res = yanlış; if (a && b) res = doğru; // res = yanlış a = 0; b = 7; if (a || b) res = doğru; // res = doğru
5. C/C++'da hangi bitsel mantıksal işlemler kullanılır?

C / C ++ dili aşağıdaki bitselleri destekler mantıksal işlemler:

  • & - bit düzeyinde mantıksal VE (VE);
  • ^ - bit düzeyinde ekleme modulo 2 (XOR - özel VEYA);
  • | - bit düzeyinde mantıksal VEYA (VEYA);
  • ~ - bitsel inversiyon (DEĞİL).

İşlemler &, ^, | ikilidir. Bu, iki işlenene ihtiyaç duydukları anlamına gelir. Herhangi bir işlenenin bitleri aşağıdakilere göre birbirleriyle karşılaştırılır: kural: birinci işlenenin 0 konumundaki bit, ikinci işlenenin 0 konumundaki bit ile karşılaştırılır. Birinci işlenenin 1. konumundaki bit daha sonra ikinci işlenenin 1. konumundaki bit ile karşılaştırılır. Tamsayı işlenenlerinin tüm bitleri bu şekilde karşılaştırılır.

6. Bit düzeyinde mantıksal işlemlerin doğruluk tablosu

Sonucun her biti, tabloda gösterildiği gibi bit olan iki işlenene göre belirlenir.

Ters çevirme, ~ işaretinin sağında tek bir işlenen gerektirir. Sonuç, işlenenin tüm bitlerinin bit düzeyinde tersine çevrilmesiyle elde edilir.

7. Mantıksal bit düzeyinde işlemlerle çalışmaya bir örnek

17 ve 45 olmak üzere unsigned short int türünde iki sayı verilsin. Sayıların her biri bellekte 1 bayt veya 8 bit yer kaplar. Aşağıda, her bit düzeyinde işlem için hesaplamanın nasıl yapıldığına dair bir örnek verilmiştir.

Örnekte görüldüğü gibi her bit üzerinde belirtilen işlem yapılmaktadır.

8. C/C++ da hangi shift işlemleri kullanılır?

C/C++ dili iki bitsel işlem içerir vardiya:

  • << - işlenenin değerinin belirtilen bit sayısı kadar sola kaydırılması. İşlenen, işlem işaretinin soluna yerleştirilir. Kaydırılacak bit sayısı, işlem işaretinin sağında belirtilir;
  • >> - belirtilen bit sayısı kadar işlenenin değerinin sağına kaydırma. İşlenen, işlem işaretinin soluna yerleştirilir (<<). Kaydırılacak bit sayısı işlem işaretinin sağına yerleştirilir.

Çekme bitleri kaybolur ve sıfır bitler "girer". İşlenenleri 1, 2, 3 veya daha fazla basamakla sola kaydırmak, 2, 4, 8, ... ile çarpmanın en hızlı yoludur. İşlenenleri 1, 2, 3 veya daha fazla basamakla sağa kaydırmak en hızlı yoldur 2, 4, 8, ... ile bölmek için

Programın tamsayı işlenenlerini 2, 4, 8 vb. ile çarpma işlemine ihtiyacı varsa. mümkün olduğunca çabuk oldu, o zaman sola kaymayı kullanmanız önerilir.

Bu aynı zamanda bir tamsayı işlenenini 2, 4, 8 vb. ile hızlı bir şekilde bölmeniz gereken durumlar için de geçerlidir. Bu durumlarda, sağa kaydırma kullanılması önerilir.

9. Programda shift işlemlerini kullanma örnekleri
// Shift işlemleri int a; int b; int c; a = 15; b = -5; // sola kaydır - çarp c = bir<< 1; // c = a * 2^1 = 30 c = b << 2; // c = b * 2^2 = -20 // sağa kaydır - bölme c = bir >> 3; // c = a / 2 ^ 3 = 1 c = b >> 1; // c = b / 2 ^ 1 = -3
10. Mantıksal işlemler ile bit düzeyinde mantıksal işlemler arasındaki fark nedir?

Mantıksal işlemlerde, iki işlenenin tüm değeri karşılaştırılır. İşlenenlerin her biri doğru veya yanlış olabilir. C / C++ dili, tamsayı olan işlenenlerin karşılaştırılmasına izin verir. Bu durumda, 0 tamsayı değeri false değerine karşılık gelir ve sıfır olmayan (herhangi bir başka) değer, true değerine karşılık gelir.

Davranış

Exclusive OR, Exclusive OR NOT, Odd ve Parity elemanları, girişlerdeki değerlerin karşılık gelen fonksiyonunu hesaplar ve sonucu çıkışa döndürür.

Varsayılan olarak, bağlı olmayan girişler yoksayılır - yani, girişlerde gerçekten bağlı hiçbir şey yoksa kablolar bile yok. Böylece 5 girişli bir öğe ekleyebilirsiniz, ancak yalnızca iki giriş bağladığınızda 2 girişli bir öğe olarak çalışacaktır; bu, her öğe oluşturduğunuzda giriş sayısını ayarlama zahmetinden sizi kurtarır. (Tüm girişler bağlı değilse, çıkış hata değeridir. x.) Bununla birlikte, bazı kullanıcılar Logisim'in gerçek öğelere karşılık geldiği için tüm girişlerin bağlanmasında ısrar etmesini tercih eder. Bu davranışı, Tasarım> Seçenekler ... menüsüne giderek, Modelleme sekmesine giderek ve Belirsizlikte Öğe Çıkışı için Tanımsız girişler için hata seçeneğini seçerek etkinleştirebilirsiniz.

Elementler için iki yönlü doğruluk tablosu aşağıdaki gibidir.

xyÖzel veya Özel VEYA DEĞİLtuhaflıkparite
0 0 0 1 0 1
0 1 1 0 1 0
1 0 1 0 1 0
1 1 0 1 0 1

Gördüğünüz gibi, Odd ve XOR kapıları iki giriş durumunda aynı şekilde davranır; benzer şekilde, Parity ve Exclusive-OR-NOT öğeleri aynı şekilde davranır. Ancak, belirli bir değere sahip ikiden fazla giriş varsa, o zaman Exclusive OR öğesi, biri kesinlikle bir girişte olduğunda çıkışta 1 verirken, Odd öğesi, birim tek bir sayıdayken çıkışta 1 verir. girdiler. Exclusive OR-NOT öğesi, 1'li girişler kesinlikle kesin olduğunda çıkışta 1 verir. Olumsuz bir, Eşlik öğesi, bir ile çift sayıda giriş olduğunda 1 verecektir. Exclusive-OR ve Exclusive-OR-NOT öğelerinin, Tek ve Parite öğelerinin davranışını kullanacak şekilde yapılandırılmalarına olanak tanıyan Çoklu Giriş Davranışı adlı bir özniteliği vardır.

Herhangi bir girişin bir hata değeri varsa (örneğin, aynı kablo üzerinde çakışan değerler gelirse) veya değişken bir değer varsa, çıkış bir hata değeri olacaktır.

Her elemanın çok bitli versiyonları, bir bitlik dönüşümlerini girdilerde bit bit gerçekleştirir.

Not: Birçok uzman, Exclusive-OR şeklindeki elemanın davranışının Odd elemanının davranışıyla eşleşmesi gerektiğini savunuyor ancak bu konuda bir fikir birliği yok. Logisim'in bir Exclusive OR öğesi için varsayılan davranışı IEEE 91 standardını temel alır.Bu aynı zamanda terimin sezgisel olarak anlaşılmasıyla da tutarlıdır. Özel veya: Patates püresi, havuç, yeşil bezelye veya rendelenmiş lahanadan oluşan bir garnitür isteyip istemediğinizi soran bir garson, bazı uzmanların size ne söylediğine bakılmaksızın, üç değil, yalnızca bir seçeneği kabul edecektir. (Ancak, bu ifadeyi ciddi bir şekilde test etmediğimi itiraf etmeliyim.) XOR ve XOR veya NOT öğelerini, Multiple Entry Behavior özniteliğini değiştirerek seçeneklerden birini kullanacak şekilde ayarlayabilirsiniz.

Kontaklar (bileşenin doğuya baktığı varsayılır)

Batı kenarı (girişler, bit genişliği Veri Bitleri özniteliğiyle eşleşir)

Bileşen girişleri. Girdi Sayısı özniteliğinde belirtildiği kadar çok sayıda olacaktır.

Kıvrımlı öğeler kullanıyorsanız, XOR ve XOR ve NOT öğelerinin batı kenarının kavisli olacağını unutmayın. Ancak, giriş pinleri nadiren bulunur. Logisim bunu göstermek için kısa çizgiler çiziyor; bir segmenti çakıştırırsanız, program herhangi bir uyarıda bulunmadan segmenti çakıştırmak istemediğinizi varsayacaktır. "Baskı Görünümü" kullanılırken, bu çizgiler kablolara bağlı değilse çizilmeyecektir.

Doğu kenarı (çıktı, bit genişliği Veri Bitleri özniteliğiyle eşleşir)

Yukarıda açıklandığı gibi, girişlerdeki mevcut değerlere göre değeri hesaplanan bir elemanın çıkışı.

Öznitellikler

Bir bileşen seçildiğinde veya zaten eklendiğinde, 0'dan 9'a kadar olan tuşlar, Giriş Sayısı niteliğini değiştirir, Alt-0'dan Alt-9'a kadar olan kombinasyonlar, Veri Bitleri niteliğini değiştirir ve ok tuşları, Yön niteliğini değiştirir.

Yön Bileşenin yönü (girişlerine göre çıkışı). Veri bitleri Bileşen giriş ve çıkışlarının genişliği. Eleman Boyutu Bileşenin geniş veya dar versiyonunun çizilmesi gerektiğini belirler. Bu, girdi sayısı özniteliği tarafından belirlenen girdi sayısını etkilemez; ancak, giriş sayısı 3'ü (dar bir bileşen için) veya 5'i (geniş bir bileşen için) aşarsa, istenen sayıda girişe uyum sağlamak için eleman "kanatlar" ile oluşturulacaktır. Giriş Sayısı Bileşenin batı kenarında kaç tane pin olacağını belirler. Çoklu giriş davranışı (yalnızca Özel VEYA ve Özel VEYA DEĞİL için) Üç veya daha fazla giriş olduğunda, Özel VEYA ve Özel VEYA DEĞİL kapılarının çıkışındaki değer, 1'in kesinlikle bir girişte olduğu gerçeğine dayalı olacaktır. (varsayılan olarak) veya tek sayıda girişte.

Bir bit, iki değerden birini sakladığından bilgi miktarı için en küçük ölçü birimidir - 0 (Yanlış) veya 1 (Doğru). Rusçaya çevrilen Yanlış ve Doğru sırasıyla yanlış ve doğrudur. Yani, bir bit hücre aynı anda olası iki durumdan sadece birinde olabilir. Bir bit hücresinin iki olası durumunun eşit olduğunu hatırlatmama izin verin - 1 ve 0.
Bitleri işlemek için belirli işlemler vardır. Bu işlemlere mantıksal veya Boole işlemleri denir ve adını bu bilim alanının gelişimine katkıda bulunan matematikçilerden George Boole (1815-1864) almıştır.
Tüm bu işlemler, 0 (sıfır) veya 1 (bir) değerine sahip olup olmadığına bakılmaksızın herhangi bir bit'e uygulanabilir. Aşağıda temel mantıksal işlemler ve kullanım örnekleri verilmiştir.

Mantıksal VE işlemi

VE gösterimi: &

Mantıksal AND işlemi iki bit ile yapılır, bunlara a ve b diyelim. a ve b 1'e eşitse mantıksal AND işlemini yürütmenin sonucu 1'e eşit olacaktır ve diğer tüm (diğer) durumlarda sonuç 0'a eşit olacaktır. Mantıksal işlemin doğruluk tablosuna bakalım ve .

bir (bit 1) b (bit 2) a (bit 1) ve b (bit 2)
0 0 0
0 1 0
1 0 0
1 1 1

Mantıksal VEYA (VEYA)

VEYA gösterimi: |

Mantıksal VEYA işlemi iki bit (a ve b) ile gerçekleştirilir. Mantıksal VEYA işlemi gerçekleştirmenin sonucu, a ve b 0'a (sıfır) eşitse 0'a eşit olacaktır ve diğer tüm (diğer) durumlarda sonuç 1'e (bir) eşit olacaktır. Mantıksal OR işleminin doğruluk tablosuna bakıyoruz.

bir (bit 1) b (bit 2) bir (bit 1) | b (bit 2)
0 0 0
0 1 1
1 0 1
1 1 1

Mantıksal işlem özel VEYA (XOR).

XOR gösterimi: ^
İki bit (a ve b) ile özel VEYA mantıksal bir işlem gerçekleştirilir. Mantıksal bir XOR işlemi gerçekleştirmenin sonucu 1 (bir) olur, eğer a veya b bitlerinden biri 1 (bir) ise, diğer tüm durumlarda sonuç 0 (sıfır) olur. VEYA hariç mantıksal işlemin doğruluk tablosuna bakarız.

bir (bit 1) b (bit 2) a (bit 1) ^ b (bit 2)
0 0 0
0 1 1
1 0 1
1 1 0

Mantıksal işlem DEĞİL (değil)

NOT notasyonu: ~
Bir bit ile mantıksal bir işlem YAPILMAZ. Bu mantıksal işlemin sonucu doğrudan bitin durumuna bağlıdır. Bit sıfır durumundaysa, NOT uygulamasının sonucu bire eşit olacaktır ve bunun tersi de geçerlidir. Mantıksal DEĞİL işleminin doğruluk tablosuna bakıyoruz.

bir (bit 1) ~ a (bit olumsuzlama)
0 1
1 0

Bu 4 mantıksal işlemi hatırlayın. Bu mantıksal işlemleri kullanarak, olası herhangi bir sonucu elde edebiliriz. C ++'da mantıksal işlemlerin kullanımı hakkında daha fazlasını okuyun.