Kamis, 12 Mei 2016

Faktorial C#

Saya telah diberikan di sini C # program untuk menemukan faktorial dari angka yang diberikan dengan dan dengan menggunakan panggilan rekursif.

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {

        static int Fact(int n)
        {
            if (n <= 1)
                return 1;
            return n * Fact(n - 1);
        }

        static int Factorial(int n)
        {
            if (n <= 1)
                return 1;
            int result = 1;
            for (int i = 2; i <= n; i++)
            {
                result = result * i;
            }
            return result;
        }


        static void Main(string[] args)
        {
            Console.Write("Enter a Number to find factorial: ");
            int n = Convert.ToInt32(Console.ReadLine());
            int r = Fact(n);
            Console.WriteLine(n.ToString() + "! = " + r.ToString());

            Console.Write("Enter a Number to find factorial: ");
            n = Convert.ToInt32(Console.ReadLine());
            r = Factorial(n);
            Console.WriteLine(n.ToString() + "! = " + r.ToString());           
        }
    }
}


Enter a Number to find factorial: 5
5! = 120
Enter a Number to find factorial: 6
6! = 720
Press any key to continue . . .

Validasi di PHP

PHP Form Validasi
Catatan Pikirkan SECURITY saat memproses bentuk PHP!
Halaman ini akan menunjukkan bagaimana proses bentuk PHP dengan keamanan dalam pikiran. validasi yang tepat dari bentuk data penting untuk melindungi formulir Anda dari hacker dan spammer!

Bentuk HTML kita akan bekerja di dalam pasal-pasal ini, mengandung berbagai bidang masukan: diperlukan dan bidang opsional teks, tombol radio, dan sebuah tombol submit:


Aturan validasi untuk formulir di atas adalah sebagai berikut:

Bidang Aturan Validasi
Nama (wajib. + Harus hanya berisi huruf dan spasi
E-mail yang disyaratkan. + Harus berisi alamat email yang valid (dengan @ dan.)
Website Opsional. Jika ada, itu harus berisi URL yang valid
Komentar Opsional. bidang input multi-line (textarea)
Jender Diperlukan. Harus pilih salah satu
Pertama kita akan melihat kode HTML untuk form:

Fields teks
Nama, email, dan bidang situs adalah elemen input teks, dan kolom komentar adalah textarea. Kode HTML terlihat seperti ini:

Nama: <input type = "text" name = "nama">
E-mail: <input type = "text" name = "email">
Website: <input type = "text" name = "situs">
Komentar: <textarea name = "comment" rows = "5" cols = "40"> </ textarea>
Tombol radio
Bidang gender tombol radio dan kode HTML terlihat seperti ini:

Jenis kelamin:
<Input type = "radio" name = "gender" value = "perempuan"> Perempuan
<Input type = "radio" name = "gender" value = "laki-laki"> Pria
Formulir Element
Kode HTML formulir terlihat seperti ini:

<Form method = "post" action = "<htmlspecialchars php echo ($ _ SERVER? [" PHP_SELF "]);?>">
Ketika formulir dikirimkan, bentuk data dikirim dengan metode = "post".

Catatan Apa $ _SERVER [ "PHP_SELF"] variabel?

The $ _SERVER [ "PHP_SELF"] adalah variabel global super yang mengembalikan nama file dari script saat ini mengeksekusi.
Jadi, $ _SERVER [ "PHP_SELF"] mengirimkan data formulir diserahkan ke halaman itu sendiri, bukannya melompat ke halaman yang berbeda. Dengan cara ini, pengguna akan mendapatkan pesan error pada halaman yang sama seperti formulir.

Catatan Apa htmlspecialchars () function?

The htmlspecialchars () fungsi mengkonversi karakter khusus untuk entitas HTML. Ini berarti bahwa hal itu akan menggantikan karakter HTML seperti <dan> dengan & lt; dan & gt ;. Hal ini mencegah penyerang dari mengeksploitasi kode dengan menyuntikkan HTML atau kode Javascript (serangan Scripting Cross-site) dalam bentuk.
Big Catatan tentang PHP Form Keamanan
The $ _SERVER [ "PHP_SELF"] variabel dapat digunakan oleh hacker!

Jika PHP_SELF digunakan dalam halaman Anda maka pengguna dapat memasukkan garis miring (/) dan kemudian beberapa Cross Site Scripting (XSS) perintah untuk mengeksekusi.

Catatan Cross-site scripting (XSS) adalah jenis kerentanan keamanan komputer biasanya ditemukan di aplikasi Web. XSS memungkinkan penyerang untuk menyuntikkan script sisi klien ke dalam halaman Web dilihat oleh pengguna lain.
Asumsikan kita memiliki bentuk berikut di halaman bernama "test_form.php":

<Form method = "post" action = "<php ​​echo $ _SERVER? [" PHP_SELF "];?>">
Sekarang, jika pengguna memasukkan URL normal pada address bar seperti "http://www.example.com/test_form.php", kode di atas akan diterjemahkan ke:

<Form method = "post" action = "test_form.php">
Sejauh ini bagus.

Namun, mempertimbangkan bahwa pengguna memasukkan URL berikut di address bar:

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
Dalam hal ini, kode di atas akan diterjemahkan ke:

<Form method = "post" action = "test_form.php /"> <script> alert ( 'hack') </ script>
Kode ini menambahkan tag script dan perintah peringatan. Dan ketika beban halaman, kode JavaScript akan dieksekusi (pengguna akan melihat kotak peringatan). Ini hanya contoh sederhana dan tidak berbahaya bagaimana variabel PHP_SELF dapat dimanfaatkan.

Menyadari bahwa kode JavaScript dapat ditambahkan dalam tag <script>! Seorang hacker dapat mengarahkan pengguna ke file di server lain, dan file yang dapat menyimpan kode berbahaya yang dapat mengubah variabel global atau mengirimkan formulir ke alamat lain untuk menyimpan data pengguna, misalnya.

Cara Hindari $ _SERVER [ "PHP_SELF"] Eksploitasi?
$ _SERVER [ "PHP_SELF"] eksploitasi dapat dihindari dengan menggunakan () fungsi htmlspecialchars.

Kode bentuk akan terlihat seperti ini:

<Form method = "post" action = "<htmlspecialchars php echo ($ _ SERVER? [" PHP_SELF "]);?>">
The htmlspecialchars () fungsi mengkonversi karakter khusus untuk entitas HTML. Sekarang jika pengguna mencoba untuk mengeksploitasi variabel PHP_SELF, itu akan menghasilkan output sebagai berikut:

<Form method = "post" action = "test_form.php / & quot; & gt; & lt; script yang & gt; alert ( 'hack') & lt; / script & gt;">
Mengeksploitasi upaya gagal, dan tidak ada salahnya dilakukan!

Validasi Form Data Dengan PHP
Hal pertama yang akan kita lakukan adalah untuk lulus semua variabel melalui htmlspecialchars PHP () fungsi.

Ketika kita menggunakan htmlspecialchars () fungsi; maka jika pengguna mencoba untuk menyerahkan berikut dalam bidang teks:

<Script> location.href ( 'http://www.hacked.com') </ script>

- Ini tidak akan dieksekusi, karena itu akan disimpan sebagai HTML lolos kode, seperti ini:

& Lt; script yang & gt; location.href ( 'http://www.hacked.com') & lt; / script & gt;

Kode ini sekarang aman untuk ditampilkan pada halaman atau dalam sebuah e-mail.

Kami juga akan melakukan dua hal lebih ketika pengguna menyerahkan formulir:

Jalur karakter yang tidak perlu (extra space, tab, baris baru) dari data input pengguna (dengan fungsi PHP lis ())
Hapus backslashes (\) dari data input pengguna (dengan stripslashes PHP () fungsi)
Langkah selanjutnya adalah membuat fungsi yang akan melakukan semua pengecekan bagi kita (yang jauh lebih nyaman daripada menulis kode yang sama berulang-ulang).

Kami akan nama fungsi test_input ().

Sekarang, kita dapat memeriksa setiap variabel $ _POST dengan fungsi test_input (), dan script terlihat seperti ini:

Contoh
<? Php
// Mendefinisikan variabel dan diatur ke nilai kosong
$ Nama = $ email = $ jender = $ komentar = $ website = "";

if ($ _SERVER [ "REQUEST_METHOD"] == "POST") {
  $ Nama = test_input ($ _ POST [ "nama"]);
  $ Email = test_input ($ _ POST [ "email"]);
  $ Website = test_input ($ _ POST [ "situs"]);
  $ Komentar = test_input ($ _ POST [ "komentar"]);
  $ Jender = test_input ($ _ POST [ "gender"]);
}

Fungsi test_input ($ data) {
  $ Data = trim ($ data);
  $ Data = stripslashes ($ data);
  $ Data = htmlspecialchars ($ data);
  kembali $ data;
}
?>
Menjalankan contoh »
Perhatikan bahwa pada awal script, kita memeriksa apakah formulir telah disampaikan menggunakan $ _SERVER [ "REQUEST_METHOD"]. Jika REQUEST_METHOD adalah POST, maka formulir telah disampaikan - dan itu harus divalidasi. Jika belum diajukan, melewatkan validasi dan menampilkan formulir kosong.

Namun, dalam contoh di atas, semua bidang input adalah opsional. Script bekerja dengan baik bahkan jika pengguna tidak memasukkan data apapun.

Langkah selanjutnya adalah membuat field input yang dibutuhkan dan membuat pesan kesalahan jika diperlukan.

Cara Membuat Database

Jika administrator membuat database Anda untuk Anda saat menyiapkan izin Anda, Anda dapat mulai menggunakannya. Jika tidak, Anda perlu membuat sendiri:

mysql> CREATE DATABASE kebun binatang;
Di Unix, nama database adalah case sensitive (tidak seperti kata kunci SQL), sehingga Anda harus selalu merujuk ke database Anda sebagai kebun binatang, bukan sebagai Menagerie, kebun binatang, atau beberapa varian lainnya. Hal ini juga berlaku untuk nama tabel. (Under Windows, pembatasan ini tidak berlaku, meskipun Anda harus merujuk ke database dan tabel menggunakan lettercase sama di seluruh query yang diberikan. Namun, karena berbagai alasan, praktek terbaik yang direkomendasikan adalah selalu menggunakan lettercase sama yang digunakan saat database telah dibuat.)

Catatan
Jika Anda mendapatkan error seperti ERROR 1044 (42000): Akses ditolak untuk pengguna 'micah' @ 'localhost' ke database 'kebun binatang' ketika mencoba untuk membuat database, ini berarti bahwa account pengguna Anda tidak memiliki hak istimewa yang diperlukan untuk melakukan begitu. Diskusikan hal ini dengan administrator atau lihat Bagian 7.2, "The MySQL Access Privilege Sistem".

Membuat database tidak memilihnya untuk digunakan; Anda harus melakukannya secara eksplisit. Untuk membuat Menagerie database saat ini, menggunakan pernyataan ini:

mysql> Menagerie USE
database berubah
database Anda perlu dibuat hanya sekali, tetapi Anda harus memilihnya untuk digunakan setiap kali Anda memulai sesi mysql. Anda dapat melakukan ini dengan mengeluarkan pernyataan USE seperti yang ditunjukkan dalam contoh. Atau, Anda dapat memilih database pada baris perintah ketika Anda menjalankan mysql. Hanya menentukan nama setelah setiap parameter koneksi yang mungkin Anda perlu menyediakan. Sebagai contoh:

shell> mysql-h tuan -u Menagerie pengguna p
Masukkan kata kunci: ********
Penting
Menagerie dalam perintah hanya ditampilkan tidak sandi Anda. Jika Anda ingin memberikan password Anda pada baris perintah setelah option -p, Anda harus melakukannya dengan tidak ada ruang intervensi (misalnya, sebagai -pmypassword, bukan sebagai -p mypassword). Namun, menempatkan sandi Anda pada baris perintah tidak dianjurkan, karena hal itu menghadapkan ke mengintai oleh pengguna lain login pada mesin Anda.

Catatan
Anda dapat melihat setiap saat database yang saat ini dipilih dengan menggunakan DATABASE SELECT ().

Cara Mengkoneksikan Database lewat PHP

Sebelum Anda bisa mendapatkan konten dari database MySQL Anda, Anda harus tahu bagaimana untuk membuat sambungan ke MySQL dari dalam script PHP. Untuk melakukan query dasar dari dalam MySQL sangat mudah. Artikel ini akan menunjukkan cara untuk bangun dan berjalan.

Mari kita mulai. Hal pertama yang harus dilakukan adalah melakukan koneksi ke fungsi database.The untuk terhubung ke MySQL disebut mysql_connect. Fungsi ini mengembalikan sumber daya yang merupakan pointer ke koneksi database. Ini juga disebut pegangan database, dan kami akan menggunakannya dalam fungsi nanti. Jangan lupa untuk mengganti rincian koneksi Anda.

<? Php
$ Username = "your_name";
$ Password = "your_password";
$ Hostname = "localhost";

// Koneksi ke database
$ Dbhandle = mysql_connect ($ hostname, $ username, $ password)
  atau mati ( "Tidak dapat terhubung ke MySQL");
echo "Terhubung dengan MySQL Situs";
?>

Semua berjalan dengan baik, Anda akan melihat "Connected to MySQL" ketika Anda menjalankan script ini. Jika Anda tidak dapat terhubung ke server, pastikan password anda, username dan hostname benar.

Setelah Anda terhubung, Anda akan ingin memilih database untuk bekerja dengan. Mari kita asumsikan database disebut 'contoh'. Untuk mulai bekerja dalam database ini, Anda akan perlu fungsi mysql_select_db ():

<? Php
// Memilih database untuk bekerja dengan
$ Dipilih = mysql_select_db ( "contoh", $ dbhandle)
  atau mati ( "Tidak dapat memilih contoh");
?>

Sekarang bahwa Anda terhubung, mari kita coba dan menjalankan beberapa query. Fungsi digunakan untuk melakukan query bernama - mysql_query (). fungsi mengembalikan sumber daya yang berisi hasil query, yang disebut hasil set. Untuk menguji hasil kita akan menggunakan fungsi mysql_fetch_array, yang mengembalikan hasil baris demi baris. Dalam kasus query yang tidak mengembalikan hasil, sumber daya yang mengembalikan fungsi hanya nilai benar atau salah.

Sebuah cara mudah untuk mengakses semua baris adalah dengan loop sementara. Mari kita tambahkan kode script kami:

<? Php
// Jalankan query SQL dan catatan kembali
$ Hasil = mysql_query ( "SELECT id, model, tahun FROM mobil");
// Mengambil data tha dari database
sementara ($ row = mysql_fetch_array ($ hasil)) {
   echo "ID:" $ row { 'id'} "Nama:"... $ row { 'model'} ".
   Situs "" $ row { 'tahun'}.. ";
}
?>

Akhirnya, kami menutup koneksi. Meskipun hal ini tidak benar-benar berbicara diperlukan, PHP secara otomatis akan menutup koneksi ketika script berakhir, Anda harus masuk ke kebiasaan menutup apa yang Anda buka.

<? Php
// Menutup koneksi
mysql_close ($ dbhandle);
?>

Berikut ini adalah kode lengkap:

<? Php
$ Username = "your_name";
$ Password = "your_password";
$ Hostname = "localhost";

// Koneksi ke database
$ Dbhandle = mysql_connect ($ hostname, $ username, $ password)
 atau mati ( "Tidak dapat terhubung ke MySQL");
echo "Terhubung dengan MySQL Situs";

// Memilih database untuk bekerja dengan
$ Dipilih = mysql_select_db ( "contoh", $ dbhandle)
  atau mati ( "Tidak dapat memilih contoh");

// Jalankan query SQL dan catatan kembali
$ Hasil = mysql_query ( "SELECT id, model, tahun FROM mobil");

// Mengambil data tha dari database
sementara ($ row = mysql_fetch_array ($ hasil)) {
   echo "ID:" $ row { 'id'} "Nama:".... $ row { 'model'} "Tahun:". // Menampilkan hasil
   $ Row { 'tahun'} "Situs".;
}
// Menutup koneksi
mysql_close ($ dbhandle);
?>

Untuk membuat database 'contoh' pada server MySQL Anda, Anda harus menjalankan script berikut:

CREATE DATABASE `examples`;
MENGGUNAKAN `examples`;
CREATE TABLE `cars` (
   `Id` int UNIK NOT NULL,
   `Name` varchar (40),
   `Year` varchar (50),
   PRIMARY KEY (id)
);
INSERT INTO mobil NILAI (1, 'Mercedes', '2000');
INSERT INTO mobil NILAI (2, 'BMW', '2004');
INSERT INTO mobil NILAI (3, 'Audi', '2001');


Half Adder dan Full Adder



Half Adder

Dengan bantuan dari setengah Adder, kita dapat merancang sirkuit yang mampu melakukan penambahan sederhana dengan bantuan gerbang logika.

Mari kita lihat penambahan bit tunggal.

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10

Ini adalah kombinasi yang mungkin paling single-bit. Namun hasil untuk 1 + 1 adalah 10. Meskipun masalah ini dapat diselesaikan dengan bantuan sebuah EXOR Gate, jika Anda peduli tentang output, hasil penjumlahan harus ditulis ulang sebagai output 2-bit.

Sehingga persamaan di atas dapat ditulis sebagai

0 + 0 = 00

0 + 1 = 01

1 + 0 = 01

1 + 1 = 10

Berikut output '1'of' 10 'menjadi carry-out. Hasilnya ditunjukkan dalam kebenaran-tabel di bawah ini. 'SUM' adalah output normal dan 'CARRY' adalah membawa-out.

INPUT OUTPUT

A CARRY B SUM

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Dari persamaan jelas bahwa 1-bit Adder ini dapat dengan mudah diimplementasikan dengan bantuan EXOR gerbang untuk output 'SUM' dan Gerbang AND untuk di bawa.


Untuk Selain kompleks, mungkin ada kasus ketika Anda harus menambahkan dua byte 8-bit bersama-sama. Hal ini dapat dilakukan hanya dengan bantuan logika penuh penambah.

Adder penuh

Jenis penambah adalah sedikit lebih sulit untuk menerapkan dari setengah penambah. Perbedaan utama antara setengah-penambah dan penuh penambah adalah bahwa full-adder memiliki tiga input dan dua output. Dua input pertama adalah A dan B dan masukan ketiga adalah input carry ditunjuk sebagai CIN. Ketika logika penambah penuh dirancang kita akan mampu string delapan dari mereka bersama-sama untuk menciptakan penambah byte-lebar dan kaskade carry bit dari satu penambah ke yang berikutnya.

Output carry ditetapkan sebagai COUT dan output normal ditetapkan sebagai S. Lihatlah tabel kebenaran.

INPUT OUTPUT

A B CIN COUT S

0 0 0 0 0

0 0 1 0 1

0 1 0 0 1

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

Dari atas kebenaran-tabel, logika penambah penuh dapat diimplementasikan. Kita bisa melihat bahwa output S adalah EXOR antara input A dan setengah-penambah SUM output dengan B dan CIN input. Kita juga harus mencatat bahwa COUT hanya akan benar jika salah satu dari dua input dari tiga yang TINGGI.

Dengan demikian, kita dapat menerapkan rangkaian adder penuh dengan bantuan dua sirkuit setengah adder. Pertama akan setengah adder akan digunakan untuk menambah A dan B untuk menghasilkan Sum parsial. Kedua logika setengah Adder dapat digunakan untuk menambah CIN ke Sum dihasilkan oleh setengah adder pertama untuk mendapatkan output S akhir. Jika salah satu logika setengah penambah menghasilkan carry, akan ada output carry. Dengan demikian, COUT akan menjadi fungsi OR dari Carry keluaran setengah-penambah. Lihatlah pelaksanaan rangkaian penambah penuh yang ditunjukkan di bawah.

Sirkuit Adder penuh
Sirkuit Adder penuh
Meskipun pelaksanaan diagram logika yang lebih besar adalah mungkin dengan di atas logika penambah penuh simbol sederhana banyak digunakan untuk mewakili operasi. Diberikan di bawah ini sederhana skema representasi dari satu-bit penambah penuh.

Single-bit penuh Adder
Single-bit penuh Adder
Dengan jenis simbol, kita dapat menambahkan dua bit bersama-sama mengambil carry dari urutan yang lebih rendah berikutnya besarnya, dan mengirim membawa ke urutan berikutnya yang lebih tinggi besarnya. Dalam komputer, untuk operasi multi-bit, masing-masing bit harus diwakili oleh penambah penuh dan harus ditambahkan secara bersamaan. Dengan demikian, untuk menambahkan dua nomor 8-bit, Anda akan membutuhkan 8 penambah penuh yang dapat dibentuk oleh cascading dua blok 4-bit. Penambahan dua angka 4-bit ditunjukkan di bawah ini.

Multi-Bit Penambahan menggunakan penuh Adder
Multi-Bit Penambahan menggunakan penuh Adder

Mutiplexer




Dalam elektronik, sebuah multiplexer (atau mux) adalah perangkat yang memilih salah satu dari beberapa sinyal input analog atau digital dan meneruskan input yang dipilih menjadi garis tunggal. [1] Sebuah multiplexer input 2n telah n pilih jalur, yang digunakan untuk memilih yang baris masukan untuk dikirim ke output. [2] multiplexer terutama digunakan untuk meningkatkan jumlah data yang dapat dikirim melalui jaringan dalam waktu tertentu dan bandwidth. [1] sebuah multiplexer juga disebut selector data. Multiplexer juga dapat digunakan untuk mengimplementasikan fungsi Boolean dari beberapa variabel.

Sebuah multiplexer elektronik memungkinkan beberapa sinyal untuk berbagi satu perangkat atau sumber daya, misalnya satu A / D converter atau satu jalur komunikasi, daripada harus satu perangkat per sinyal input.

Sebaliknya, demultiplexer (atau demux) adalah perangkat mengambil sinyal input tunggal dan memilih salah satu dari banyak data keluaran-garis, yang dihubungkan ke input tunggal. Sebuah multiplexer sering digunakan dengan demultiplexer pelengkap di ujung penerima. [1]

Sebuah multiplexer elektronik dapat dianggap sebagai multiple-input, satu-output switch, dan demultiplexer sebagai single-masukan, switch multi-output. [3] Skema simbol untuk multiplexer adalah trapesium sama kaki dengan sisi sejajar lagi berisi pin input dan sisi paralel pendek berisi pin output. [4] skema di sebelah kanan menunjukkan multiplexer 2-ke-1 di sebelah kiri dan setara saklar di sebelah kanan. Kawat sel menghubungkan input yang diinginkan untuk output.

Satu digunakan untuk multiplexer adalah penghematan biaya dengan menghubungkan multiplexer dan demultiplexer bersama melalui saluran tunggal (dengan menghubungkan keluaran tunggal multiplexer untuk input tunggal yang demultiplexer itu). Gambar ke kanan menunjukkan ini. Dalam hal ini, biaya pelaksanaan saluran terpisah untuk setiap sumber data lebih tinggi daripada biaya dan ketidaknyamanan menyediakan fungsi multiplexing / demultiplexing.

Pada akhir penerimaan data menautkan demultiplexer pelengkap biasanya diperlukan untuk memecah aliran data tunggal kembali ke dalam sungai asli. Dalam beberapa kasus, sistem ujung mungkin memiliki lebih banyak fungsi daripada demultiplexer sederhana dan begitu, sementara demultiplexing masih ada secara logis, itu mungkin tidak pernah benar-benar terjadi secara fisik. Ini akan menjadi khas di mana multiplexer melayani jumlah pengguna jaringan IP dan kemudian feed langsung ke router yang segera membaca isi dari keseluruhan link ke prosesor routing dan kemudian melakukan demultiplexing dalam memori dari mana ia akan dikonversi langsung ke IP bagian.

Seringkali, multiplexer dan demultiplexer digabungkan bersama-sama ke dalam satu bagian dari peralatan, yang biasanya disebut hanya sebagai "multiplexer". Kedua buah peralatan yang dibutuhkan di kedua ujung link transmisi karena kebanyakan sistem komunikasi mengirimkan di kedua arah.

Dalam desain sirkuit analog, multiplexer adalah tipe khusus dari saklar analog yang menghubungkan satu sinyal dipilih dari beberapa input ke output tunggal.

Dalam desain sirkuit digital, kabel pemilih adalah dari nilai digital. Dalam kasus multiplexer 2-ke-1, nilai logika 0 akan menghubungkan \ scriptstyle I_0 ke output sementara nilai logika 1 akan menghubungkan \ scriptstyle I_1 untuk output. Dalam multiplexer yang lebih besar, jumlah pin pemilih sama dengan \ scriptstyle \ meninggalkan \ lceil \ log_2 (n) \ right \ rceil mana \ scriptstyle n adalah jumlah input.

Misalnya, 9 sampai 16 input akan membutuhkan tidak kurang dari 4 pin pemilih dan 17-32 input akan membutuhkan tidak kurang dari 5 pin pemilih. Nilai biner diekspresikan pada pin pemilih ini menentukan pin input yang dipilih.

Sebuah multiplexer 2-ke-1 memiliki persamaan boolean mana \ scriptstyle A dan \ scriptstyle B adalah dua input, \ scriptstyle S adalah input pemilih, dan \ scriptstyle Z adalah output:

Z = (A \ cdot \ overline {S}) + (B \ cdot S)

A 2-ke-1 mux
Yang dapat dinyatakan sebagai tabel kebenaran:

\ Scriptstyle S \ scriptstyle A \ scriptstyle B \ scriptstyle Z
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
Atau, dalam notasi sederhana:

\ Scriptstyle S \ scriptstyle Z
0 A
1 B
Tabel ini menunjukkan bahwa ketika \ scriptstyle S = 0 maka \ scriptstyle Z = A tapi ketika \ scriptstyle S = 1 maka \ scriptstyle Z = B. Sebuah realisasi langsung dari ini 2-ke-1 multiplexer akan membutuhkan 2 DAN gerbang, gerbang OR, dan gerbang NOT.

multiplexer yang lebih besar juga umum dan, seperti disebutkan di atas, memerlukan \ scriptstyle \ meninggalkan \ lceil \ log_2 (n) pin \ right \ rceil pemilih untuk n input. ukuran umum lainnya adalah 4-ke-1, 8-to-1, dan 16-ke-1. Sejak logika digital menggunakan nilai biner, kekuatan dari 2 digunakan (4, 8, 16) secara maksimal mengendalikan sejumlah masukan untuk sejumlah tertentu input pemilih.


4-ke-1 mux


8-ke-1 mux


16-ke-1 mux
Persamaan boolean untuk multiplexer 4-ke-1 adalah:

Z = (A \ cdot \ overline {S_0} \ cdot \ overline {S_1}) + (B \ cdot S_0 \ cdot \ overline {S_1}) + (C \ cdot \ overline {S_0} \ cdot S_1) + (D \ cdot S_0 \ cdot S_1)
Berikut multiplexer 4-ke-1 dibangun dari buffer 3-state dan DAN gerbang (AND gerbang bertindak sebagai decoder):

Mux dari buffers.png 3 negara

Perhatikan bahwa subskrip pada \ scriptstyle I_n input menunjukkan nilai desimal dari input kontrol biner di mana masukan yang membiarkan melalui.

Multiplexer yang lebih besar dapat dibangun dengan menggunakan multiplexer kecil dengan merantai mereka bersama-sama. Sebagai contoh, sebuah multiplexer 8-ke-1 dapat dibuat dengan dua 4-ke-1 dan satu multiplexer 2-ke-1. Dua 4-ke-1 multiplexer output yang dimasukkan ke dalam 2-untuk-1 dengan pin pemilih pada 4-ke-1 put secara paralel memberikan total jumlah input pemilih untuk 3, yang setara dengan 8-to -1.

Seri 7400 memiliki beberapa IC yang berisi multiplexer (s):

S.No. IC No Fungsi Keluaran Negara
1 74157 Quad 2: 1 mux. Output yang sama sebagai masukan yang diberikan
2 74158 Quad 2: 1 mux. Output terbalik masukan
0 74.153 Ganda 4: 1 mux. Output yang sama sebagai masukan
5 74352 Ganda 4: 1 mux. Output terbalik masukan
9 74151A 8: 1 mux. Kedua output yang tersedia (yaitu, output komplementer)
6 74151 8: 1 mux. Output terbalik masukan
7 74150 16: 1 mux. Output terbalik masukan

K MAP




Peta Karnaugh, juga dikenal sebagai K-peta, adalah metode untuk menyederhanakan ekspresi aljabar boolean. Maurice Karnaugh diperkenalkan pada tahun 1953 sebagai penyempurnaan dari 1.952 diagram Veitch Edward Veitch ini. Peta Karnaugh mengurangi kebutuhan untuk perhitungan luas dengan mengambil keuntungan dari kemampuan pengenalan pola manusia '. Hal ini juga memungkinkan identifikasi cepat dan penghapusan kondisi ras potensial.

Hasil boolean yang diperlukan ditransfer dari tabel kebenaran ke grid dua dimensi di mana sel-sel yang diperintahkan dalam kode Gray, dan setiap posisi sel merupakan satu kombinasi dari kondisi input, sementara setiap nilai sel mewakili nilai output yang sesuai. kelompok optimal 1s atau 0s diidentifikasi, yang merupakan syarat dari bentuk kanonik logika dalam tabel kebenaran yang asli. [1] Istilah-istilah ini dapat digunakan untuk menulis ekspresi boolean minimal mewakili logika yang diperlukan.

peta Karnaugh digunakan untuk menyederhanakan persyaratan logika dunia nyata sehingga mereka dapat diimplementasikan dengan menggunakan jumlah minimum gerbang logika fisik. Sebesar-of-produk ekspresi selalu dapat diimplementasikan dengan menggunakan gerbang AND makan ke sebuah gerbang OR, dan ekspresi produk-of-jumlah mengarah ke gerbang OR makan sebuah gerbang. [2] peta Karnaugh juga dapat digunakan untuk menyederhanakan ekspresi logika dalam desain software. kondisi Boolean, seperti yang digunakan misalnya dalam pernyataan bersyarat, bisa menjadi sangat rumit, yang membuat kode sulit untuk membaca dan untuk mempertahankan. Setelah diminimalkan, kanonik sum-of-produk dan produk-of-jumlah ekspresi dapat diimplementasikan secara langsung menggunakan AND dan OR operator logika.

tabel kebenaran dari fungsi
  A B C D f (A, B, C, D)
0 0 0 0 0 0
1 0 0 0 1 0
2 0 0 1 0 0
3 0 0 1 1 0
4 0 1 0 0 0
5 0 1 0 1 0
6 0 1 1 0 1
7 0 1 1 1 0
8 1 0 0 0 1
9 1 0 0 1 1
10 1 0 1 0 1
11 1 0 1 1 1
12 1 1 0 0 1
13 1 1 0 1 1
14 1 1 1 0 1
15 1 1 1 1 0
Berikut adalah dua notasi yang berbeda menggambarkan fungsi yang sama dalam aljabar Boolean unsimplified, menggunakan variabel Boolean A, B, C, D, dan invers mereka.

f (A, B, C, D) = \ sum _ {} m_i, i \ di \ {6, 8, 9, 10, 11, 12, 13, 14 \} di mana m_i adalah minterm untuk memetakan (yaitu, baris yang memiliki output 1 dalam tabel kebenaran).
f (A, B, C, D) = \ prod _ {} M_i, i \ di \ {0, 1, 2, 3, 4, 5, 7, 15 \} di mana M_i adalah maxterms untuk memetakan (yaitu, baris yang memiliki keluaran 0 di tabel kebenaran).

konstruksi K-peta. Alih-alih mengandung nilai-nilai output, diagram ini menunjukkan jumlah output, oleh karena itu tidak peta Karnaugh.

Dalam tiga dimensi, satu dapat menekuk persegi panjang ke torus.
Dalam contoh di atas, empat variabel input dapat dikombinasikan dalam 16 cara yang berbeda, sehingga tabel kebenaran memiliki 16 baris, dan peta Karnaugh memiliki 16 posisi. Peta Karnaugh karena itu diatur dalam 4 × 4 kotak.

Baris dan kolom indeks (ditampilkan di bagian atas, dan di sisi kiri dari peta Karnaugh) yang diperintahkan dalam kode Gray daripada urutan numerik biner. Kode Gray memastikan bahwa hanya satu perubahan variabel antara setiap pasangan sel yang berdekatan. Setiap sel dari peta Karnaugh selesai berisi digit biner yang mewakili output fungsi untuk kombinasi input.

Setelah peta Karnaugh telah dibangun, digunakan untuk menemukan salah satu bentuk yang paling sederhana - bentuk kanonik - untuk informasi dalam tabel kebenaran. 1s berdekatan di peta Karnaugh merupakan peluang untuk menyederhanakan ekspresi. Minterm ( 'istilah minimal') untuk ekspresi akhir ditemukan oleh mengelilingi kelompok 1s di peta. kelompok minterm harus persegi panjang dan harus memiliki luas yang merupakan kekuatan dua (yaitu, 1, 2, 4, 8 ...). persegi panjang minterm harus sebesar mungkin tanpa mengandung 0s apapun. Kelompok mungkin tumpang tindih untuk membuat masing-masing lebih besar. Pengelompokan optimal dalam contoh di bawah ini ditandai dengan garis hijau, merah dan biru, dan kelompok merah dan hijau tumpang tindih. Kelompok merah adalah 2 × 2 persegi, kelompok hijau adalah 4 × 1 persegi panjang, dan daerah tumpang tindih ditunjukkan dalam coklat.

Sel-sel yang sering dilambangkan dengan singkatan yang menggambarkan nilai logis dari input bahwa sel mencakup. Misalnya, AD akan berarti sel yang meliputi area 2x2 di mana A dan D adalah benar, yaitu sel-sel nomor 13, 9, 15, 11 dalam diagram di atas. Di sisi lain, A \ overline {D} berarti sel-sel di mana A adalah benar dan D adalah palsu (yaitu, \ overline {D} benar).

grid toroidally terhubung, yang berarti bahwa kelompok persegi panjang bisa membungkus seluruh tepi (lihat gambar). Sel di sebelah kanan ekstrim sebenarnya 'berdekatan' untuk orang-orang di paling kiri; sama, sehingga orang-orang di bagian paling atas dan orang-orang di bagian bawah. Oleh karena itu, A \ overline {D} bisa menjadi valid jangka itu termasuk sel 12 dan 8 di atas, dan membungkus ke bawah untuk memasukkan sel 10 dan 14-sebagaimana adanya \ overline {B} \, \ overline {D} , yang meliputi empat sudut.

Setelah peta Karnaugh telah dibangun dan 1s yang berdekatan dihubungkan oleh kotak persegi panjang dan persegi, minterm aljabar dapat ditemukan dengan memeriksa yang variabel tetap sama dalam setiap kotak.

Untuk pengelompokan merah:

A adalah sama dan sama dengan 1 seluruh kotak, oleh karena itu harus dimasukkan dalam aljabar representasi dari minterm merah.
B tidak mempertahankan negara yang sama (itu bergeser dari 1 ke 0), dan karenanya harus dikeluarkan.
C tidak berubah. Itu selalu 0, sehingga yang melengkapi, TIDAK-C, harus dimasukkan. Dengan demikian, \ overline {C} harus dimasukkan.
Perubahan D, sehingga dikecualikan.
Dengan demikian minterm pertama di Boolean sum-of-produk ekspresi adalah A \ overline {C}.

Untuk pengelompokan hijau, A dan B mempertahankan negara yang sama, sementara C dan D perubahan. B adalah 0 dan harus menegasikan sebelum dapat disertakan. Oleh karena itu istilah kedua adalah Sebuah \ overline {B}. Catatan itu baik-baik saja bahwa pengelompokan hijau tumpang tindih dengan yang merah.

Dengan cara yang sama, pengelompokan biru memberikan istilah BC \ overline {D}.

Solusi dari setiap kelompok digabungkan: bentuk normal dari rangkaian tersebut adalah A \ overline {C} + A \ overline {B} + BC \ overline {D}.

Sehingga peta Karnaugh telah membimbing penyederhanaan

\ Begin {menyelaraskan}
              f (A, B, C, D) = {} & \ overline {A} SM \ overline {D} + A \ overline {B} \, \ overline {C} \, \ overline {D} + A \ overline {B} \, \ overline {C} D + A \ overline {B} C \ overline {D} + {} \\
                                 & A \ overline {B} CD + AB \ overline {C} \, \ overline {D} + AB \ overline {C} D + ABC \ overline {D} \\
                            = {} & A \ overline {C} + A \ overline {B} + BC \ overline {D}
\ End {menyelaraskan}
Hal ini juga akan mungkin untuk mendapatkan penyederhanaan ini dengan hati-hati menerapkan aksioma aljabar boolean, tapi waktu yang dibutuhkan untuk melakukan itu tumbuh secara eksponensial dengan jumlah istilah.