Bagaimana 0 memiliki dua nilai dalam komplemen seseorang?

12

Dikatakan bahwa pada komplemen 2's 0 hanya memiliki satu nilai, sedangkan pada komplemen 1's baik +0 dan -0 memiliki nilai yang terpisah. Apakah mereka?

pengguna136782
sumber
8
0 tidak memiliki dua nilai. Ini memiliki nilai 0. Periode. Apa yang tidak ada di 1 komplemen dua representasi . Tapi itu bukan sesuatu yang unik. Misalnya, angka 10 memiliki banyak representasi dalam desimal: 10, +10, 010, +010, 0010, +0010,… dan seterusnya.
Jörg W Mittag
Persis. The nilai-nilai hanya kelas kesetaraan dari representasi, dan apa yang disebut “nilai 0” terjadi menjadi kelas kesetaraan mengandung 000...0dan 111...1. Tetapi dua representasi ini masih membuat hanya nilai tunggal.
leftaroundabout

Jawaban:

19

Dalam komplemen 1 Anda hanya membalikkan semua bit.

Pertimbangkan 2 contoh ini (dengan asumsi 8 bit):

  • 4=00000100 , jadi-4=11111011

  • 0=00000000 , jadi .-0=11111111

Jadi, Anda memiliki 2 cara untuk mewakili angka 0

Dalam komplemen 2, Anda menambahkan 1 ke representasi komplemen 1 dari angka negatif

  • -4 yang di komplemen 1 adalah menjadi1111101111111100
  • -0 bahwa komplemen 1 adalah menjadi sama dengan 01111111100000000

Jadi, Anda hanya memiliki satu cara untuk mewakili 0 dalam kasus ini

Seperti yang Anda lihat dari contoh perbedaannya adalah:

  • dalam komplemen 1, dengan 8 bit Anda hanya dapat mengekspresikan angka dari hingga (dari -127 hingga 127)-27+127-1
  • dalam pelengkap 2 dengan 8 bit Anda dapat mengekspresikan angka dari hingga (dari -128 hingga 127), jadi satu angka lagi-2727-1
abc
sumber
7
Mungkin perlu disebutkan bahwa komplemen 2's memiliki lebih banyak keuntungan di samping hanya satu nomor lagi dalam kisaran, bahkan jika Anda tidak masuk ke detail apa mereka.
KRyan
7
Mungkin juga sebutkan salah satu keuntungan yang disebutkan di bagian komentar di sini: Salah satu keuntungan utama adalah pengurangan (/ penambahan angka negatif) dapat diimplementasikan hanya dengan berpura-pura angka tidak ditandatangani dan menambahkannya. Tidak diperlukan case khusus untuk pengurangan = sirkuit dan logika yang lebih sederhana. Halaman ini memiliki artikel bagus tentang topik itu.
Jason C
3

0...01...1-0

David Richerby
sumber
Satu tambahan pelengkap atau pengurangan bekerja dengan end-around carry. Tentu saja, apa yang ditampilkan kepada programmer tidak perlu representasi yang mendasarinya.
ttw
1
@ttw Pertanyaannya bertanya apa dua representasi dari nol, jadi saya tidak yakin di mana penambahan, pengurangan dan programmer masuk ke dalamnya.
David Richerby
3

Berbicara tentang dua nilai 0 yang berbeda dalam komplemen seseorang adalah menyesatkan. Komplemen satu (dan komplemen dua) adalah representasi angka biner . Mereka menggambarkan cara untuk mewakili angka dalam biner, dan bagaimana melakukan operasi aritmatika pada mereka. Angka yang diwakili oleh urutan bit adalah nilainya.

0-00=-00

00...01...1

Martijn
sumber