Pelengkap dua adalah cara cerdas menyimpan bilangan bulat sehingga masalah matematika umum sangat mudah diimplementasikan.
Untuk memahami, Anda harus memikirkan angka-angka dalam biner.
Pada dasarnya dikatakan,
- untuk nol, gunakan semua 0.
- untuk bilangan bulat positif, mulailah menghitung, dengan maksimum 2 (jumlah bit - 1) -1.
- untuk bilangan bulat negatif, lakukan hal yang persis sama, tetapi alihkan peran 0 dan 1 (jadi alih-alih mulai dengan 0000, mulailah dengan 1111 - itulah bagian "pelengkap").
Mari kita coba dengan mini-byte 4 bit (kami akan menyebutnya nibble - 1/2 a byte).
0000
- nol
0001
- satu
0010
- dua
0011
- tiga
0100
ke 0111
- empat hingga tujuh
Sejauh yang kami bisa dalam positif. 2 3 -1 = 7.
Untuk yang negatif:
1111
- yang negatif
1110
- negatif dua
1101
- negatif tiga
1100
ke 1000
- negatif empat ke negatif delapan
Perhatikan bahwa Anda mendapatkan satu nilai ekstra untuk negatif ( 1000
= -8) yang tidak Anda dapatkan untuk positif. Ini karena 0000
digunakan untuk nol. Ini dapat dianggap sebagai Line Number komputer.
Membedakan antara angka positif dan negatif
Melakukan ini, bit pertama mengambil peran bit "tanda", karena dapat digunakan untuk membedakan antara nilai desimal negatif dan negatif. Jika bit yang paling signifikan adalah 1
, maka biner dapat dikatakan negatif, di mana seolah-olah bit yang paling signifikan (paling kiri) adalah 0
, Anda dapat mengatakan bahwa nilai desimalnya tidak negatif.
Angka negatif "Satu komplemen" hanya membalik bit tanda, kemudian dihitung dari 0. Tetapi pendekatan ini harus berurusan dengan menafsirkan 1000
sebagai "nol negatif" yang membingungkan. Anda umumnya hanya perlu khawatir tentang ini ketika bekerja dekat dengan perangkat keras.
Saya ingin tahu apakah ini bisa dijelaskan lebih baik daripada artikel Wikipedia.
Masalah dasar yang Anda coba selesaikan dengan representasi komplemen dua adalah masalah menyimpan bilangan bulat negatif.
Pertama-tama pertimbangkan integer tanpa tanda yang disimpan dalam 4 bit. Anda dapat memiliki yang berikut ini
Ini tidak ditandatangani karena tidak ada indikasi apakah itu negatif atau positif.
Masuk Magnitude dan Notasi Kelebihan
Untuk menyimpan angka negatif, Anda dapat mencoba beberapa hal. Pertama, Anda dapat menggunakan notasi tanda magnitudo yang memberikan bit pertama sebagai bit tanda untuk mewakili +/- dan bit sisanya untuk mewakili magnitudo. Jadi gunakan 4 bit lagi dan anggap 1 berarti - dan 0 berarti + maka Anda miliki
Jadi, Anda lihat masalahnya di sana? Kami memiliki positif dan negatif 0. Masalah yang lebih besar adalah menambah dan mengurangi angka biner. Sirkuit untuk menambah dan mengurangi menggunakan tanda magnitudo akan sangat kompleks.
apa yang
?
Sistem lain adalah notasi berlebih . Anda dapat menyimpan angka negatif, Anda menyingkirkan masalah dua nol tetapi penambahan dan pengurangan tetap sulit.
Jadi datanglah pelengkap dua. Sekarang Anda dapat menyimpan bilangan bulat positif dan negatif dan melakukan aritmatika dengan relatif mudah. Ada sejumlah metode untuk mengubah angka menjadi komplemen dua. Ini dia.
Konversi Desimal ke Dua's Komplemen
Ubah angka menjadi biner (abaikan tandanya untuk sekarang) misal 5 adalah 0101 dan -5 adalah 0101
Jika angka tersebut adalah angka positif maka Anda selesai. misalnya 5 adalah 0101 dalam biner menggunakan notasi komplemen dua.
Jika angkanya negatif maka
3.1 menemukan komplemen (terbalik 0 dan 1) misalnya -5 adalah 0101 sehingga menemukan komplemen adalah 1010
3,2 Tambahkan 1 ke komplemen 1010 + 1 = 1011. Oleh karena itu, -5 dalam komplemen dua adalah 1011.
Jadi, bagaimana jika Anda ingin melakukan 2 + (-3) dalam biner? 2 + (-3) adalah -1. Apa yang harus Anda lakukan jika Anda menggunakan besaran tanda untuk menambahkan angka-angka ini? 0010 + 1101 =?
Menggunakan komplemen dua mempertimbangkan betapa mudahnya.
Mengubah Komplemen Dua menjadi Desimal
Mengonversi 1111 ke desimal:
Angka dimulai dengan 1, jadi negatif, jadi kami menemukan komplemen dari 1111, yaitu 0000.
Tambahkan 1 hingga 0000, dan kami memperoleh 0001.
Konversi 0001 ke desimal, yaitu 1.
Terapkan tanda = -1.
Tada!
sumber
Seperti kebanyakan penjelasan yang pernah saya lihat, yang di atas jelas tentang cara bekerja dengan komplemen 2, tetapi tidak benar-benar menjelaskan apa yang secara matematis. Saya akan mencoba melakukan itu, setidaknya untuk bilangan bulat, dan saya akan membahas beberapa latar belakang yang mungkin sudah lazim.
Ingat cara kerjanya untuk desimal:
2345
adalah cara penulisan
2 × 10 3 + 3 × 10 2 + 4 × 10 1 + 5 × 10 0 .
Dengan cara yang sama, biner adalah cara menulis angka menggunakan hanya 0 dan 1 mengikuti ide umum yang sama, tetapi mengganti 10s di atas dengan 2s. Kemudian dalam biner,
1111
adalah cara penulisan
1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0
dan jika Anda berhasil, itu ternyata sama dengan 15 (basis 10). Itu karena itu
8 + 4 + 2 + 1 = 15.
Ini semua baik dan bagus untuk angka positif. Ini bahkan berfungsi untuk angka negatif jika Anda bersedia menempelkan tanda minus di depannya, seperti halnya manusia dengan angka desimal. Itu bahkan bisa dilakukan di komputer, semacam, tapi saya belum melihat komputer seperti itu sejak awal tahun 1970-an. Saya akan meninggalkan alasan untuk diskusi yang berbeda.
Untuk komputer ternyata lebih efisien menggunakan representasi komplemen untuk angka negatif. Dan inilah sesuatu yang sering diabaikan. Notasi pelengkap melibatkan semacam pembalikan digit angka, bahkan nol tersirat yang datang sebelum angka positif normal. Itu aneh, karena muncul pertanyaan: semuanya? Itu bisa menjadi jumlah digit yang tak terbatas untuk dipertimbangkan.
Untungnya, komputer tidak mewakili ketidakterbatasan. Angka dibatasi pada panjang tertentu (atau lebar, jika Anda suka). Jadi mari kita kembali ke bilangan biner positif, tetapi dengan ukuran tertentu. Saya akan menggunakan 8 digit ("bit") untuk contoh-contoh ini. Jadi angka biner kita akan menjadi
00001111
atau
0 × 2 7 + 0 × 2 6 + 0 × 2 5 + 0 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0
Untuk membentuk komplemen negatif 2, pertama-tama kita melengkapi semua digit (biner) untuk membentuk
11110000
dan menambahkan 1 ke bentuk
11110001
tetapi bagaimana kita memahami bahwa artinya -15?
Jawabannya adalah kita mengubah arti bit orde tinggi (yang paling kiri). Bit ini akan menjadi 1 untuk semua angka negatif. Perubahannya adalah dengan mengubah tanda kontribusinya pada nilai nomor yang muncul. Jadi sekarang 11110001 kita dipahami mewakili
- 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 0 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0
Perhatikan bahwa "-" di depan ungkapan itu? Ini berarti bahwa bit tanda membawa bobot -2 7 , yaitu -128 (basis 10). Semua posisi lain mempertahankan bobot yang sama dengan yang mereka miliki dalam angka biner yang tidak ditandatangani.
Mengetahui -15 kami adalah
-128 + 64 + 32 + 16 + 1
Cobalah di kalkulator Anda. ini -15.
Dari tiga cara utama yang saya lihat angka negatif terwakili di komputer, komplemen 2's menang dengan mudah untuk kenyamanan dalam penggunaan umum. Ini memiliki keanehan. Karena ini biner, harus ada beberapa kombinasi bit yang mungkin. Setiap angka positif dapat dipasangkan dengan negatifnya, tetapi hanya ada satu nol. Meniadakan nol membuat Anda nol. Jadi ada satu kombinasi lagi, angka dengan 1 di bit tanda dan 0 di tempat lain. Angka positif yang sesuai tidak akan sesuai dengan jumlah bit yang digunakan.
Yang lebih aneh dari angka ini adalah jika Anda mencoba membentuk positifnya dengan melengkapi dan menambahkannya, Anda akan mendapatkan angka negatif yang sama kembali. Tampaknya wajar bahwa nol akan melakukan ini, tetapi ini tidak terduga dan sama sekali bukan perilaku yang biasa kita lakukan karena komputer disamping, kita biasanya memikirkan persediaan angka yang tidak terbatas, bukan aritmatika dengan panjang tetap ini.
Ini seperti puncak gunung es keanehan. Masih ada lagi yang menunggu di bawah permukaan, tapi itu sudah cukup untuk diskusi ini. Anda mungkin dapat menemukan lebih banyak jika Anda meneliti "overflow" untuk aritmatika titik tetap. Jika Anda benar-benar ingin masuk ke dalamnya, Anda mungkin juga meneliti "modular arithmetic".
sumber
Pelengkap 2 sangat berguna untuk menemukan nilai biner, namun saya memikirkan cara yang jauh lebih ringkas untuk menyelesaikan masalah seperti itu (tidak pernah melihat orang lain menerbitkannya):
ambil biner, misalnya: 1101 yang [dengan asumsi ruang "1" adalah tanda] sama dengan -3 .
menggunakan komplemen 2's kita akan melakukan ini ... flip 1101 ke 0010 ... tambahkan 0001 + 0010 ===> memberi kita 0011. 0011 dalam biner positif = 3. karena itu 1101 = -3 !
Apa yang saya sadari:
alih-alih semua membalik dan menambahkan, Anda bisa melakukan metode dasar untuk menyelesaikan biner positif (katakanlah 0101) adalah (2 3 * 0) + (2 2 * 1) + (2 1 * 0) + (2 0 * 1) = 5.
Lakukan konsep yang sama persis dengan negatif! (Dengan sedikit twist)
ambil 1101, misalnya:
untuk angka pertama alih-alih 2 3 * 1 = 8 , do - (2 3 * 1) = -8 .
kemudian lanjutkan seperti biasa, melakukan -8 + (2 2 * 1) + (2 1 * 0) + (2 0 * 1) = -3
sumber
Bayangkan Anda memiliki jumlah bit / trit / digit / apa pun yang terbatas. Anda mendefinisikan 0 karena semua angka adalah 0, dan menghitung secara alami:
Akhirnya Anda akan meluap.
Kami memiliki dua digit dan dapat mewakili semua angka dari 0 hingga 100. Semua angka itu positif! Misalkan kita ingin merepresentasikan angka negatif juga?
Apa yang sebenarnya kita miliki adalah sebuah siklus. Angka sebelum 2 adalah 1. Angka sebelum 1 adalah 0. Angka sebelum 0 adalah ... 99 .
Jadi, untuk kesederhanaan, katakanlah angka berapapun di atas 50 adalah negatif. "0" hingga "49" mewakili 0 hingga 49. "99" adalah -1, "98" adalah -2, ... "50" adalah -50.
Representasi ini adalah komplemen sepuluh . Komputer biasanya menggunakan komplemen dua , yang sama kecuali menggunakan bit, bukan digit.
Hal yang menyenangkan tentang komplemen sepuluh adalah penambahan itu hanya berfungsi . Anda tidak perlu melakukan sesuatu yang istimewa untuk menambahkan angka positif dan negatif!
sumber
Saya membaca penjelasan fantastis tentang Reddit oleh jng, menggunakan odometer sebagai analogi.
sumber
Dua komplemen ditemukan dengan menambahkan satu ke komplemen pertama dari nomor yang diberikan. Katakanlah kita harus mencari dua komplemen
10101
kemudian menemukan komplemennya, yaitu,01010
tambahkan1
ke hasil ini, yaitu01010+1=01011
,, yang merupakan jawaban akhir.sumber
Mari kita dapatkan jawaban 10 - 12 dalam bentuk biner menggunakan 8 bit: Apa yang akan kita lakukan adalah 10 + (-12)
Kita perlu mendapatkan bagian pujian dari 12 untuk mengurangi dari 10.12 dalam biner adalah 00001100. 10 dalam biner adalah 00001010.
Untuk mendapatkan bagian pujian dari 12 kita hanya membalikkan semua bit kemudian menambahkan 1. 12 dalam biner terbalik adalah 11110011. Ini juga merupakan kode Inverse (komplemen seseorang). Sekarang kita perlu menambahkan satu, yang sekarang 11110100.
Jadi 11110100 adalah pujian dari 12! Mudah ketika Anda memikirkannya seperti ini.
Sekarang Anda dapat menyelesaikan pertanyaan 10-12 di atas dalam bentuk biner.
sumber
Komplemen 2: Ketika kita menambahkan satu tambahan dengan komplemen nomor 1 kita akan mendapatkan komplemen 2 itu. Misalnya: 100101 komplemen 1 adalah 011010 dan komplemen 2 adalah 011010 + 1 = 011011 (Dengan menambahkan satu dengan komplemen 1) Untuk informasi lebih lanjut , artikel ini menjelaskannya secara grafis.
sumber
Melihat sistem komplemen keduanya dari sudut pandang matematika itu benar-benar masuk akal. Dalam komplemen sepuluh, idenya adalah pada dasarnya 'mengisolasi' perbedaan.
Contoh: 63 - 24 = x
Kami menambahkan komplemen dari 24 yang benar-benar adil (100 - 24). Jadi sungguh, semua yang kita lakukan adalah menambahkan 100 pada kedua sisi persamaan.
Sekarang persamaannya adalah: 100 + 63 - 24 = x + 100, itu sebabnya kami menghapus 100 (atau 10 atau 1000 atau apa pun).
Karena situasi yang tidak nyaman karena harus mengurangi satu angka dari rantai panjang nol, kami menggunakan sistem 'radix komplemen yang berkurang', dalam sistem desimal, komplemen sembilan.
Ketika kita disajikan dengan angka yang dikurangi dari rantai besar sembilan, kita hanya perlu membalikkan jumlahnya.
Contoh: 99999 - 03275 = 96724
Itulah alasannya, setelah komplemen sembilan, kita menambahkan 1. Seperti yang mungkin Anda ketahui dari matematika masa kanak-kanak, 9 menjadi 10 dengan 'mencuri' 1. Jadi pada dasarnya hanya komplemen sepuluh yang mengambil 1 dari perbedaan.
Dalam Binary, komplemen dua sama dengan komplemen sepuluh, sedangkan komplemen satu untuk komplemen sembilan. Perbedaan utama adalah bahwa alih-alih mencoba mengisolasi perbedaan dengan kekuatan sepuluh (menambahkan 10, 100, dll ke dalam persamaan) kita mencoba mengisolasi perbedaan dengan kekuatan dua.
Karena alasan inilah kami membalikkan bit. Sama seperti bagaimana minuend kita adalah rantai nin dalam desimal, minuend kita adalah rantai yang dalam biner.
Contoh: 111111 - 101001 = 010110
Karena rantai yang 1 di bawah kekuatan dua yang bagus, mereka 'mencuri' 1 dari perbedaan seperti sembilan lakukan dalam desimal.
Ketika kita menggunakan angka biner negatif, kita hanya mengatakan:
0000 - 0101 = x
1111 - 0101 = 1010
1111 + 0000 - 0101 = x + 1111
Untuk 'mengisolasi' x, kita perlu menambahkan 1 karena 1111 adalah satu dari 10.000 dan kita menghapus 1 yang memimpin karena kita baru saja menambahkannya ke perbedaan asli.
1111 + 1 + 0000 - 0101 = x + 1111 + 1
10000 + 0000 - 0101 = x + 10.000
Hapus saja 10000 dari kedua sisi untuk mendapatkan x, itu adalah aljabar dasar.
sumber
Banyak jawaban sejauh ini dengan baik menjelaskan mengapa komplemen dua digunakan untuk mewakili angka negatif, tetapi tidak memberi tahu kami apa nomor komplemen dua itu, terutama bukan mengapa '1' ditambahkan, dan pada kenyataannya sering ditambahkan dengan cara yang salah.
Kebingungan berasal dari pemahaman yang buruk tentang definisi bilangan pelengkap. Pelengkap adalah bagian yang hilang yang akan membuat sesuatu menjadi lengkap.
Komplemen radix dari bilangan n digit x dalam radix b adalah, menurut definisi, b ^ nx. Dalam biner 4 diwakili oleh 100, yang memiliki 3 digit (n = 3) dan radix 2 (b = 2). Jadi komplemen radixnya adalah b ^ nx = 2 ^ 3-4 = 8-4 = 4 (atau 100 dalam biner).
Namun, dalam biner mendapatkan komplemen radix tidak semudah mendapatkan komplemen radix yang berkurang, yang didefinisikan sebagai (b ^ n-1) -y, hanya 1 kurang dari komplemen radix. Untuk mendapatkan pelengkap radix yang berkurang, Anda cukup membalik semua digit.
100 -> 011 (diperkecil (miliknya) pelengkap radix)
untuk mendapatkan pelengkap radix (dua), kita cukup menambahkan 1, seperti definisi yang didefinisikan.
011 +1 -> 100 (komplemen dua).
Sekarang dengan pemahaman baru ini, mari kita lihat contoh yang diberikan oleh Vincent Ramdhanie (lihat tanggapan kedua di atas)
/ * mulai dari Vincent
Mengonversi 1111 ke desimal:
Angka dimulai dengan 1, jadi negatif, jadi kami menemukan komplemen dari 1111, yaitu 0000. Tambahkan 1 hingga 0000, dan kami memperoleh 0001. Konversikan 0001 ke desimal, yaitu 1. Terapkan tanda = -1. Tada!
akhir dari Vincent * /
Harus dipahami sebagai
Angka dimulai dengan 1, jadi negatif. Jadi kita tahu itu adalah pelengkap dua dari beberapa nilai x. Untuk menemukan x yang diwakili oleh komplemen keduanya, pertama-tama kita perlu menemukan komplemen 1-nya.
komplemen dua x: 1111 komplemen x: 1111-1 -> 1110; x = 0001, (balik semua digit)
terapkan tanda -, dan jawabannya = -x = -1.
sumber
Kata pelengkap berasal dari kelengkapan. Dalam dunia desimal angka 0 hingga 9 memberikan pelengkap (set lengkap) angka atau simbol angka untuk mengekspresikan semua angka desimal. Di dunia biner, angka 0 dan 1 menyediakan pelengkap angka untuk mengekspresikan semua angka biner. Faktanya Simbol 0 dan 1 harus digunakan untuk mewakili semuanya (teks, gambar, dll) serta positif (0) dan negatif (1). Di dunia kita, ruang kosong di sebelah kiri angka dianggap nol:
Di lokasi penyimpanan komputer tidak ada ruang kosong. Semua bit (digit biner) harus 0 atau 1. Untuk secara efisien menggunakan nomor memori dapat disimpan sebagai representasi 8 bit, 16 bit, 32 bit, 64 bit, 128 bit. Ketika nomor yang disimpan sebagai nomor 8 bit ditransfer ke lokasi 16 bit, tanda dan besarnya (nilai absolut) harus tetap sama. Representasi komplemen 1 dan representasi komplemen 2 memfasilitasi ini. Sebagai kata benda: Kedua komplemen 1 dan komplemen 2 adalah representasi biner dari jumlah yang ditandatangani di mana bit yang paling signifikan (yang di sebelah kiri) adalah bit tanda. 0 untuk positif dan 1 untuk negatif. Pelengkap 2s tidak berarti negatif. Ini berarti jumlah yang ditandatangani. Seperti dalam desimal, besarnya direpresentasikan sebagai kuantitas positif. Struktur menggunakan ekstensi tanda untuk mempertahankan kuantitas saat mempromosikan ke register [] dengan lebih banyak bit:
Sebagai kata kerja: komplemen 2 berarti meniadakan . Bukan berarti bikin negatif. Itu berarti jika negatif membuat positif; jika positif buat negatif. Magnitudo adalah nilai absolut:
Kemampuan ini memungkinkan pengurangan biner yang efisien menggunakan meniadakan lalu menambahkan. a - b = a + (-b)
Cara resmi untuk mengambil komplemen 1 adalah untuk setiap digit kurangi nilainya dari 1.
Ini sama dengan membalik atau membalik setiap bit satu per satu. Ini menghasilkan nol negatif yang tidak disukai sehingga menambahkan satu ke komplemen 1 menghilangkan masalah. Untuk meniadakan atau mengambil komplemen 2s terlebih dahulu ambil komplemen 1s kemudian tambahkan 1.
Dalam contoh-contoh negasi bekerja juga dengan tanda bilangan diperpanjang.
Menambahkan:
1110 Carry 111110 Carry 0110 sama dengan 000110 1111 111111 jumlah 0101 jumlah 000101
Menarik:
Perhatikan bahwa ketika bekerja dengan komplemen 2's, ruang kosong di sebelah kiri nomor diisi dengan nol untuk angka positif tetapi diisi dengan yang untuk angka negatif. Carry selalu ditambahkan dan harus berupa 1 atau 0.
Bersulang
sumber
Pelengkap 2 pada dasarnya adalah cara untuk datang dengan aditif kebalikan dari angka biner. Tanyakan pada diri sendiri: Diberikan angka dalam bentuk biner, pola bit apa, ketika ditambahkan ke nomor asli, yang akan membuat hasilnya nol? Jika Anda dapat menemukan pola bit ini maka pola bit tersebut adalah representasi -ve (aditif terbalik) dari angka asli; seperti definisi menambahkan nomor ke aditif kebalikannya harus selalu menghasilkan nol. Contoh: ambil 101, yang merupakan desimal 5. Sekarang tugasnya adalah membuat pola bit yang bila ditambahkan ke pola bit yang diberikan (101) akan menghasilkan nol. Untuk melakukan itu, mulailah dari bit paling kanan 101 dan untuk setiap bit individual, tanyakan lagi pertanyaan yang sama: Bit apa yang harus saya tambahkan ke bit "ini" untuk membuat hasilnya nol? terus melakukan hal itu dengan mempertimbangkan carry over yang biasa. Setelah kita selesai dengan 3 tempat paling kanan (digit yang menentukan angka asli tanpa memperhatikan nol terkemuka) carry terakhir masuk dalam pola bit dari aditif terbalik. Selain itu, karena kita bisa menahan angka asli dalam katakanlah satu byte, semua bit terkemuka lainnya dalam invers aditif juga harus 1 sehingga ketika komputer menambahkan nomor dan invers aditifnya menggunakan "bahwa" jenis penyimpanan (karakter) hasil di char itu akan menjadi nol.
sumber
Saya menyukai jawaban lavinio, tetapi menggeser bit menambah kompleksitas. Seringkali ada pilihan bit bergerak sambil menghormati bit tanda atau sambil tidak menghormati bit tanda. Ini adalah pilihan antara memperlakukan angka sebagai ditandatangani (-8 hingga 7 untuk gigitan, -128 hingga 127 untuk byte) atau angka tak bertanda rentang penuh (0 hingga 15 untuk camilan, 0 hingga 255 untuk byte).
sumber
Ini adalah cara cerdik untuk mengkode bilangan bulat negatif sedemikian rupa sehingga sekitar setengah dari kombinasi bit dari tipe data dicadangkan untuk bilangan bulat negatif, dan penambahan sebagian besar bilangan bulat negatif dengan bilangan bulat positif yang sesuai akan menghasilkan carry overflow yang meninggalkan hasilnya menjadi nol biner.
Jadi, dalam komplemen 2 jika satu adalah 0x0001 maka -1 adalah 0x1111, karena itu akan menghasilkan jumlah gabungan 0x0000 (dengan limpahan 1).
sumber
Komplemen dua adalah salah satu cara mengekspresikan angka negatif dan sebagian besar pengontrol dan prosesor menyimpan angka negatif dalam bentuk komplemen 2
sumber
Pelengkap dua ini terutama digunakan untuk alasan berikut:
sumber
REFERENSI: https://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html
Saya membalikkan semua bit dan menambahkan 1. Secara terprogram:
sumber
Komplemen 2 dari angka yang diberikan adalah no. dapatkan dengan menambahkan 1 dengan komplemen 1 dari no. misalkan, kita memiliki nomor biner .: 10111001101 Komplemen 1 adalah: 01000110010 Dan pelengkap 2 adalah: 01000110011
sumber
Untuk melengkapi bitwise angka adalah membalik semua bit di dalamnya. Untuk melengkapi dua, kami membalik semua bit dan menambahkan satu.
Menggunakan representasi komplemen 2 untuk bilangan bulat yang ditandatangani, kami menerapkan operasi komplemen 2 untuk mengonversi bilangan positif ke ekuivalen negatif dan sebaliknya. Jadi menggunakan camilan sebagai contoh,
0001
(1) menjadi1111
(-1) dan menerapkan op lagi, kembali ke0001
.Perilaku operasi pada nol menguntungkan dalam memberikan representasi tunggal untuk nol tanpa penanganan khusus nol dan negatif.
0000
melengkapi1111
, yang ketika 1 ditambahkan. meluap ke0000
, memberi kita satu nol, bukan yang positif dan negatif.Keuntungan utama dari representasi ini adalah bahwa sirkuit penambahan standar untuk bilangan bulat tak bertanda menghasilkan hasil yang benar ketika diterapkan pada mereka. Misalnya menambahkan 1 dan -1 dalam camilan:,
0001 + 1111
bit meluap keluar dari register, meninggalkan0000
.Untuk perkenalan yang lembut, Computerphile yang luar biasa telah menghasilkan video tentang subjek tersebut .
sumber
Secara sederhana
2's Complement
adalah cara untuk menyimpan angka negatif dalam Memori Komputer. Sedangkan Angka Positif disimpan sebagai Angka Biner Normal.Mari kita perhatikan contoh ini,
Komputer menggunakan
Binary Number System
untuk mewakili angka berapa pun.Ini direpresentasikan sebagai
0101
.Ketika komputer encouters
-
menandatangani, itu menghitung komplemen 2 itu dan menyimpannya.i.e
5 = 0101 dan komplemen 2 adalah1011
.Aturan penting yang digunakan komputer untuk memproses angka adalah,
1
maka harusnegative
angka.0
maka itu adalah angka positif karena tidak ada-0
sistem bilangan. (1000 is not -0
Sebaliknya itu positif8
)0
maka itu0
.positive number
.sumber
Anda juga dapat menggunakan kalkulator online untuk menghitung representasi biner komplemen dua angka desimal: http://www.convertforfree.com/twos-complement-calculator/
sumber
Jawaban paling sederhana:
1111 + 1 = (1) 0000. Jadi 1111 harus -1. Lalu -1 + 1 = 0.
Sangat sempurna untuk memahami ini semua untukku.
sumber