Friday 17 November 2017

Soal pengurangan opcje binarne


PENJUMLAHAN dalam BINER Seperti bilangan desimal, bilangan biner juga dijumlahkan dengan cara yang sama. Pertama-tama yang harus dicermati adalah aturan cyfrowy biner berikut: 1 1 0 - gt menyimpan 1 sebagai catatan bahwa jumlah dua yang terakhir adalah: 1 1 1 1 - gt dengan menyimpan 1 Dengan hanya menggunakan penjumlahan-penjumlahan, kita dapat melakukan penjumlahan biner seperti ditunjukkan di bawah ini: 1 1111 8211gt simpanan 1 ingat kembali aturan di atas 01011011 8211gt bilangan biner dla 91 01001110 8211gt bilangan biner dla 78 10101001 8211gt Jumlah dari 91 78 169 Kita aka menghitung penjumlahan biner yang terdiri dari 5 bilangan: 11101 bilangan 1) 10110 bilangan 2) 1100 bilangan 3) 11011 bilangan 4) 1001 bilangan 5) Dla menjumlahkannya, kita hitung berdasarkan aturan yang berlaku, dan dla lebih mudahnya perhitungan dilakukan bertahap 11101 bilangan 1) 10110 bilangan 2) 1100 bilangan 3) Opublikowany w Algotima C to m. in. ltstdio. hgt include ltconio. hgt include ltiostream. hgt define MAXSTACK 100 typedef int itemType typedef struct int itemMAXSTACK int jml Stack int kosong (Stack s) return (s-gtjml0) int penuh (Stack s) return (s-gtjmlMAXSTACK) void isi (itemType x, Stack s) jeśli (penuh (s)) printf (8220nMaaf danych sudah penuhn8221) else s-gtitems - gtjmlx (s-gtjml) void ambil (Stack s, itemType x) if (kosong (s)) printf (8220nMaaf danych masih kosongn8221) else 8211 (s-gtjml) xs-gtitems-gtjml s-gtitems-gtjml0 printf (8220nData i berhasil diambiln8221, x) void tampil (Stack s) if (kosong (s)) printf (8220nMaaf Data masih kosongn8221) else printf (8220n8221) for (int is-gtjml-1igt0i8211) printf (8220Data: dn8221, s-gtitemi) void hapus (Stack s) s-gtjml0 printf (8220nSEMaa dane berhasil dihapusn8221) void main () int pil Tumpukan itemType dane init (amptumpukan) do printf (8220nMENU: n 1. Isin 2. Ambiln 3. Lihatn 4. Hapusn 5. Keluarn8221) printf (8220Masukkan pilihan: 8220) scanf (8220i8221, amppil) przełącznik (pil) Przypadek 1: printf (8220nMasukkan dane: 8220) scanf (8220i8221, ampdata) isi (dane, amptumpukan) przypadek przerwy 2: ambil (amptumpukan, ampdata ) break case 3: tampil (amptumpukan ) Przerwa w przypadku 4: hapus (amptumpukan) przerwa (pil5) ada beberapa Algoritma Sortowanie, yaitu: 1. Wstawienie Sortuj Salah satu algoritma sortowanie yang paling sederhana adalah sortowanie. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu. Anggaplah anda ingin mengurutkan satu zestaw kartu dari kartu yang bernilai palący kecil hingga yang palący besar. Seluruh kartu diletakkan pada meja, sebutlah meja ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian kita mempunyai meja yang lain, meja kedua, dimana kartu yang diurutkan akan diletak. Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada meja kedua. Ambil kartu kedua dari meja pertama, bandingkan z kartami yang berada pada meja kedua, kemudian letakkan pada urutan yang sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletak berurutan pada meja kedua. Algorytm wstawiania sortowania pada dasarnya memilah dane yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja kedua). Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletak sesuai posisinya pada bagian len dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan. 2. Selekcja Sortuj Jika anda diminta dla membuat algoritma sorting tersendiri, anda mungkin akan menemukan sebuah algorytma yang mirip z sortowania wyboru. Layaknya sortowanie wstawiania, algoritma ini sangat rapat dan mudah for diimplementasikan. Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket kartu. Asumsikan bahwa kartu tersebut akan diurutkan secara rosnąco. Pada awalnya, kartu tersebut i disusun secara linier pada sebuah meja dari kiri ke kanan, dan dari atas ke bawah. Pilih nilai kartu yang paling rendah, kemudian tukarkan posisi karti inninju kartu yang terletak pada pojok kiri atas meja. Lalu cari kartu z nilai paling rendah diantara sisa kartu yang tersedia. Tukarkan kartu yang baru saja terpilih z kartu pada posisi kedua. Ulangi langkahlangkah tersebut hingga posisi kedua sebelum posisi terakhir dibandingkan dan dapat digeser z kartu yang bernilai lebih rendah. Ide utama dari algoritma selection sort adalah memilih elemen denim nilai paling rendah dan menukar elemen yang terpilih z elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 3.Merge Sortuj Sebelum mendalami algoritma sortuj, mari kita mengetahui garis besar dari konsep dziel i rządź karena merge sort mengadaptasi pola tersebut. Pola Divide i Conquer Beberapa algoritma mengimplementasikan konsep rekursi dla menyelesaikan permasalahan. Permasalahan utama kemudian dipecah menjadi sub-masalah, kemudian solusi dari sub-masalah akan membranimbing menuju solusi permasalahan utama. Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah. 8211 Divide Memilah masalah menjadi sub masalah 8211 Conquer Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektif 8211 Kombinacja Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju penyelesaian atas permasalahan utama 4.Quicksort Quicksort ditemukan oleh C. A.R Hoare. Seperti pada merge sort, algoritma ini juga berdasar pada pola divide-and-conquer. Berbeda dengan sortowanie, algorytma ini hanya mengikuti langkah langkah sebagai berikut: 1. Divil Memilah rangkaian data menjadi dua sub-rangkaian Apq-1 dan Aq1r dimana setiap elemen Apq-1 adalah kuranga dari atau sama z Aq dan setiap elemen pada Aq1r adalah lebih besar atau sama dengan elemen pada Aq. Aq disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan. 2. Conquer Mengurutkan elemen pada sub-rangkaian secara rekursif Pada algorytma quicksort, langkah kombinasi tidak di lakukan karena telah teriadi pengurutan elemen elemen pada sub-tablica Algoritma Binary Search Binary Search adalah algoritma pencarian yang lebih efisien daripada algorima Sekwencyjne wyszukiwanie. Hal ini dikarenakan algoritma ini tidak perlu menjelajahi setiap elemen dari tabel. Kerugiannya adalah algorytma ini banya digunakan pada tabel yang elemennya sudah terurut baik menaik maupun menurun. Pada intinya, algoritma ini menggunakan prinsip dziel i rządź, dimana sebuah masalah atau tujuan diselesaikan den cara mempartisi masalah menjadi bagian yang lebih kecil. Algoritma ini membagi sebuah tabelę menjadi dua dan memproses satu bagian dari tabel itu saja. Algorytmy ini bekerja dengan cara memilih record z indeksem tengah dari tabel i membandingkannya dengan rekord yang hendak dicari. Nagrywaj Jika, ale nie możesz tego zrobić, maka, tablica, tabliczka, dibagi, duan, dan, batian, tablica, yang, bersesuaian, akan, diproses, kembali, secara, reursif. Contoh Program sort, binary, sekwencyjny program C Ini adalah program sortujący paling lengkap. include ltiostream. hgt include ltconio. hgt int data100, data2100 int n void tukar (int a, int b) int tt datab datab dataa dataa t void exchange () dla (int i0 iltn-1 i) for (int j (i1) jltn j) if (data i gt dataj) tukar (i, j) coutltltexchange sort selesailtltendl void selectionsort () int pos, i, j dla (i0iltn-1i) pos i for (j i1jltnj) if (dataj lt datapos) pos j if (pos i) tukar (pos, i) coutltltselection sort selesailtltendl void insertionsort () int temp, i, j for (i1iltni) temp datai ji -1 while (datajgttemp ampamp jgt0) dataj1 dataj j dataj1 temp coutltltinsertion sort selesailtltendl void QuickSort ( int L, int R) najlepszy sort kiedykolwiek miałem int i, j int mid i L j R mid dane (LR) 2 do while (datai lt mid) i while (dataj gt mid) j if (L lt j) QuickSort (L, j) jeśli (i lt R) QuickSort (i, R) void Input () coutltltMasukkan jumlah dane cingtgtn dla (int i0iltni) coutltltMasukkan dane ke-ltlt (i1) ltlt cingtgtdatai dane2i dane void AcakLagi () for (int i0iltni ) datai data2i co utltltData sudah teracakltltendl void main () int pil clrscr () do clrscr () coutltltProgram Sortowanie Komplit. ltltendl coutltltltltendl coutltlt 1. Wejście Dataltltendl coutltlt 2. Bubble Sortltltendl coutltlt 3. Wymiana Sortltltendl coutltlt 4. Wybór Sortltltendl coutltlt 5. Wstawienie Sortltltendl coutltlt 6. Szybkie Sortltltendl coutltlt 7. Tampilkan Dataltltendl coutltlt 8. Acak Dataltltendl coutltlt 9. Exitltltendl coutltlt Pilihan Anda cingtgtpil switch (pil) case 1: Input () break case 2: bubblesort () break case 3: exchange - mix () break case 4: selectionsort () - przypadek break 5: insertionsort () - case przerwania 6: QuickSort (0, n-1) coutltltquick sort selesailtltendl break case 7: Tampil () break case 8: AcakLagi () break getch () podczas (pil9) contoh program search (binary) pada c: int binarysearch (int cari) int l, r, m int n 10 l 0 r n-1 int ketemu 0 while (lltr ampamp ketemu0) m (lr) 2 jeśli (datam cari) ketemu 1 else if (cari lt datam) r m-1 else l m1 if (ketemu 1) return 1 else return 0 void main () clrscr () int cari, hasil coutltltmasukkan data yin ingin dicari cingtgtcari hasil binarysearch (ca ri) if (hasil 1) coutltltData adaltltendl else if (hasil 0) coutltltData Tidak adaltltendl getch () contoh program search (sekwencyjny) pada c: include ltiostream. hgt include ltconio. hgt void main () clrscr () int data8 int cari, index int ketemu0 coutltltmasukkan data yang ingin dicari cingtgtcari for (int i0ilt8i) if (datai cari) ketemu1 index i break if (ketemu 1) coutltltData adaltltendl coutltltData terletak di index ke ltltindex else coutltltData Tidak adaltltendl getch () Penjelasan tentang wskaźnik wskaźnika adalah built - w typie di C dan C, dimana C mengambil konsep pointer dari C. Wskaźnik sebenarnya sangat terkait dengan Abstract C Machine, yaitu model mesin abstrak program dimana C bekerja. Streszczenie C Maszyna adalah mesin abstrak dimana mesin tersebut memiliki prosesor dla menginterpretasikan strumień instrukcji, dan adresowalna pamięć yang terbagi kedalam 3 bagian. pamięć automatyczna, pamięć statyczna i wolna pamięć. Adresowalne pamięci pamięci adamah yang konten-nya dapat diambil jika diketahui alamatnya. Lebih jauh lagi, terdapat asumsi bahwa konten memori dapat di ambil z waktu konstan, tidak peduli berapa nilai alamat. Hal ini disebut z pamięci dostępu losowego. Penggunaan Wskaźnik Awal Jika variabel merupakan isi memori, dan dla mengakses isi memori tersebut adres diperlukan, lalu bagaimana cara kita mengetahui alamat dari suu zmiennej. Jawabannya adalah. untuk kebanyakan kasus kita sam se tahak peru tahu alamat dari sebuah variabel. Dla mangakses sebuah variabel kita hanya peru nama dari variabel tersebut. Tugas kompiler lah yang mentranslasikan nama ke alamat mesin yang diperlukan oleh komputer. Akan tetapi terdapat beberapa kasus dimana kita tidak mungkin memberi nama pada sebuah uprawnia program kita. Dane wyjściowe są dostępne w połączonych listach danych, tablica rozmiarów, drzewo dan lain sebagainya. Hal ini karena kita tidak mungkin memberi nama terhadap uprawnia yang mungkin ada atau tidak ada. Struktur seperti lista powiązana hampir mustahil dibuat tanpa pointer tanpa harus mendefinisikan Lista LISP-like. Inilah awalah mula penggunaan pointer sebagai moniker. Istilah, siniki i inne elementy, które można znaleźć na stronie. Domyślnie ini bukanlah istilah standard dan lazim. tetapi sesuatu yang saya pilih impromptu do membedakan ze wskaźnikiem atau reference yang sudah memiliki arti tersendiri. Penggunaan lain pointer sebagai moniker adalah dla mengatasi kelemahan bahasa C Awal. Dahulu fungsi fungsi di C hanya mengerti przekazać według wartości. Wskaźnik digunakan do mengemulasi pass przez odniesienie wskaźnik karena berisi alamat ke objek lain, sehingga fungsi tersebut dapat mengubah obkun terdebut dengan memanipulasi wskaźnik. Pertanyaanya. siapa yang bertugas menentukan alamat objek yang di tunjuk oleh wskaźnik dalam kasus ini. jelas bukan kompiler karena objek tersebut tidak bernama. Apakah kita sebagai programmer menentukannya sendiri. ternyata tidak. Hal zawiera ditentukan oleh fungsi malloc dan sejenisnya (dan juga nowy C), atau dla kasus passing pointer ke dalam fungsi, operator amp. Jadi dalam hal ini kita tidak juga menentukan alamat sebuah objek. Builtin Array di C dan C Sebelum membahas array di C dan di C, ada baiknya kita membahas tentang array. Array adalah asosiasi antara sebuah index dengan nilai. Jika diketahui sebuah index, kita akan mengetahui nilainya. Dari definisi ini: 1. Tidak disebutkan bahwa index harus integer, atau tipe tertentu. 2. Tidak disebutkan range dari indexnya dimulai dari nilai tertentu, Bahán tidak disebutkan bahwa indeks niu memiliki batas bawah maupun batas atas. 3. Tidak disebutkan bahwa nilai harus disimpan secara contigous, bahkan tidak disebutkan bahwa nilainya harus z simpan sama sekali. akan tetapi: 1. Banyak bahasa pemrograman yang di desain tahun 60-an hingga tahun 70-a menentukan bahwa tablica indeksowa adalah liczba całkowita atau sesuatu yang bisa dikonversi menjadi liczba całkowita atau sesuatu yang memiliki nilai berurutan seperti integer. 2. Beberapa bahasa menentukan bahwa array dimulai dengan Nawigacja pocztowaBangangan Biner merupakan bilangan yang memiliki radiksbasis 2, dengan notasi. (n) 2 Sistem bilangan biner adalah sebuah sistem penulisan angka z menggunakan dua simbol yaitu 0 dan 1. Za simbol angka 0 (nol) maka berarti Fałszywe dan dla simbol angka 1 (satu) maka berarti True. Ternyata Sistem bilangan biner modern ini ditemukan oleh Gottfried Wilhelm Leibniz pada abad ke-17. Dan Sistem podwójnie ini merupakan dasar dari semua sistem bilangan berbasis digital. Berikut tabela yang berupa contoh nilai bilangan desimal yang dinyatakan sebagai bilangan biner. Desimal Biner (8 bitów) 0 0000 0000 1 0000 0001 2 0000 0010 3 0000 0011 4 0000 0100 5 0000 0101 6 0000 0110 7 0000 0111 8 0000 1000 9 0000 1001 10 0000 1010 11 0000 1011 12 0000 1100 13 0000 1101 14 0000 1110 15 0000 1111 16 0001 0000 Catatan: 2 0 1, 2 1 2, 2 2 4, 2 3 8, 2 4 16, 2 5 32, 2 6 64 dst Pembahasan sistem bilangan biner tuh gak hania sampai di catatan terakhir diatas. tapii82308230 bilan biner biss mengalami konversi kebentuk bilangan oktal, bilangan desimal, dan bilangan heksadesimal. Nah, berikut merupakan pembahasan dla pengkonversian bilangan biner ke bilangan lainnya. KONVERSI DARI BINER KE OKTAL Kalo8217 bilangan biner itu radiksbasis nya 2, nah8230 sekarang akan dibahas konversi dari bilangan biner ke bilangan oktal yang memiliki radiksbasis 8 (Notasi. (N) 8 dengan bilangan 0, 1, 2, 3, 4, 5, 6 , dan 7). Misal: Ubahlah bilangan biner 11110011001 kedalam bilangan oktal 011 110 011 001 3 6 3 1 Jadi hasil konversi bilangan biner 11110011001 adalah 3631. Cara8230nya8230. A8230da8230lah82308230 (tu-wa-ga-pat): Karena biner nya 11 cyfrowy dan konversinya ke bilangan oktal, maka harus dikelompokkan masing-masing 3 cyfry, nah ternyata hasil pengelompokkan mengalami kekurangan cyfra jadii82308230 cyfra yang palący kiri ditambahkan cyfra 0 (nol) dan setelah dikelompokkan menjadi 3 cyfry, lalu perhitungannya dilakukan per kelompok dan memulai perhitungan per kelompoknya tetap dimulia dari lajur yang paling kanan ke kiri. Sehingga hasil konversinya adalah. 11110011001 2 3631 8 KONVERSI BINER KE HEXADESIMAL Metode konversinya hampir sama z Biner ke Oktal. Namun pengelompokkannya sejumlah 4-bit. Empat kelompok bit bling kanan adalah posisi satuan, empat bit kedua dari kanan adalah puluhan, dan seterusnya. Contohnya: 11100011 2 82308230 16 Solusi: kelompok bit paling kanan: 0011 3 kelompok bit berikutnya: 1110 E Hasil konversinya adalah: E3 16. KONVERSI DARI BINER KE DESIMAL Misal: 0000 0101 2 (merupakan binary 8 digit) 82308230 10 Cara menghitung: Langkah 1: Let8217s znać bahwa perhitungan do bilangan biner, harus dimulai dari lajur paling kanan ke kiri, nah perhitungannya seperti yang diuraikan dibawah ini nih8230 0 0 0 0 0 1 0 1 2 7 2 6 2 5 2 4 2 3 2 2 1 1 2 0 Langkah 2: Yang angka biner 0 tidak dilakukan perhitungan sedangkan angka biner 1 dihitung, jadinya: (02152 7) (02152 6) (02152 5) (02152 4) (02152 3) (12152 2) (02152 1) (12152 0) 0 0 0 0 0 4 0 1 5 10 Jadi bilangan biner z nilai 0000 0101 2 jika dikonversikan ke bilangan desimal maka nilai nya menjadi 5 10. Jika bilangan biner nya 4 cyfry, maka konversi ke desimalnya juga menggunakan cara yang sama z bilanerem binarnym 8 cyfr, yaitu menghitungnya dimulai dari lajur yang paling kanan ke kiri. Mudah kan8230 Seperti pada bilangan desimal, dalam bilangan bator dapat dilakukan operasi aritmatika seperti penjumlahan, pengurangan, perkalian dan pembagian. Penjumlahan bilangan biner serupa z penjumlahan pada bilangan desimal. Dua bilangan yang akan dijumlahkan disusun secara vertikal dan cyfra cyfrowa yang mempunyai signifikansi sama di tempatkan pada kolom yang sama. Digit-digit ini kemudian dijumlahkan dan jika jumlahnya lebih besar dari 1, maka ada bilangan yang disimpan, selanjutnya bilangan yang disimpan tersebut dijumlahkan dengan bilangan di sebelah kirinya. Aturan dasar dla penjumlahan pada bilangan biner adalah seperti berikut: 0 0 0 0 1 1 1 0 1 1 1 0, simpan 1 Sebagai contoh akan dijumlah dua bilangan biner 0101 2 0011 2 hasilnya 1000 2 Terkadang hasil penjumlahan bilangan lebih besar dari 2 jika hal tersebut terjadi, maka bilangan dapat disimpan lebih dari satu tempat, misalnya 1 1 1 1 0 yang disimpan 10. Contoh soal 0001 2 0011 2 0101 2 0111 2 hasilnya 10000 2 Pada kolom ke 3, bilangan yang disimpan ada dua bilangan yang berasal dari hasil penjumlahan pada kolom ke 5 yang nilai penjumlahannya adalah (100) dan kolom ke 4 yang nilai penjumlahannya adalah (10). Sedangkan bilangan yang disimpan pada kolom 1 dan 2 merupakan bilangan hasil dari penjumlahan pada kolom 3 yang nilai penjumlahannya adalah (100). Metode yang digunakan dalam pengurangan bilangan biner juga sama z metode yang digunakan do pengurangan pada bilangan desimal. Dalam metode ini, jika diperlukan sebuah angka diperbolehkan meminjam 1 dari kolom yang mempunyai derajat lebih tinggi atau yang biasanya berada di sebelah kiri. Aturan dasar dla pengurangan bilangan biner adalah sebagai berikut: 0 8211 0 0 1 8211 0 1 1 8211 1 0 0 8211 1 1, pinjam 1 Sebagai contoh terdapat dua bilangan biner x dan y bilangan x 0101 2. bilangan y 0011 2. Jika dilakukan operasi pengurangan maka 0101 2 8211 0011 2 hasilnya 0010 2. berikut penjelasannya: - Pengurangan pada digit ke 4 dari x 8211 y adalah 1 8211 1 hasilnya 0. - Pengurangan pada digit ke 3 dari x 8211 y adalah 0 8211 1 hasilnya 1, setelah angka 0 dari bilangan x meminjam angka 1 dari digit ke 2 dari bilangan x, sehingga cyfra ke 2 bilangan x berubah menjadi 0. - Pengurangan pada cyfra ke 2 dari x 8211 y adalah 0 8211 0 hasilnya 0 - Pengurangan pada digit ke 1 dari x 8211 y adalah 0 8211 0 hasilnya 0 Metode yang digunakan dalam perkalian biner juga pada dasarnya sama rzeczownik perkalian desimal, akan terdżadi pergeseran ke kanan setiap dikalikan 1 bit pengali. Setelah produkuje perkalian masujące-tnący kawałek pengali selesai, dilakukan penjumlahan masing-masing kolom nieco hasil. Contoh: Serupa z perkalianami, pembagian pada bilangan biner juga menggunakan metode yang sama z pembagian desimal. Bit-bit yang dibagi diambil bit na bit dari sebelah kiri. Apabila nilainya lebih dari bit pembagi, maka bagila bit-bit tersebut, tetapi jika setelah bergeser 1 bit nilainya masih dibawah nilai pembagi maka hasilnya adalah 0. Contoh:

No comments:

Post a Comment