Saya tahu ini ada hubungannya dengan komplemen 2 dan menambahkan 1, tapi saya tidak benar-benar mengerti bagaimana Anda dapat menyandikan satu nomor lagi dengan jumlah bit yang sama ketika datang ke angka negatif.
Saya tahu ini ada hubungannya dengan komplemen 2 dan menambahkan 1, tapi saya tidak benar-benar mengerti bagaimana Anda dapat menyandikan satu nomor lagi dengan jumlah bit yang sama ketika datang ke angka negatif.
Jawaban:
Pikirkan hal ini dalam istilah-istilah ini. Ambil nomor 2-bit dengan tanda sebelumnya:
000 = 0
001 = 1
010 = 2
011 = 3
Sekarang mari kita memiliki beberapa negatif:
111 = -1
110 = -2
101 = -3
Tunggu, kami juga punya
100 ...
Itu harus negatif, karena tanda-bit adalah 1. Jadi, secara logis, itu harus -4.
(Sunting: Seperti WorldEngineer tunjukkan dengan benar , tidak semua sistem penomoran bekerja seperti ini - tetapi yang Anda tanyakan tentang lakukan.)
Karena tidak ada dua kelas angka dalam rentang bilangan bulat, tetapi tiga: angka negatif, nol, dan angka positif. Nol harus mengambil slot (akan menjadi agak tidak praktis untuk tidak dapat mewakili nol ...), sehingga kelas positif atau negatif harus memberikan slot. Fakta bahwa biasanya rentang positif yang harus membuat pengorbanan itu sampai batas tertentu sewenang-wenang, tetapi pada tingkat manipulasi bit ada beberapa hal yang membuat keputusan ini lebih nyaman.
Pada dasarnya ada tiga cara untuk mewakili bilangan bulat yang ditandatangani dalam biner: komplemen 2, komplemen 1, dan magnitudo tanda. (Biquinary pergi ke jalan Dodo Bird sejak lama.)
Komplemen dan sign-magnitude 1 memiliki dua nilai nol, +0 dan -0, masing-masing dengan representasi unik. Komplemen 2 hanya memiliki satu nilai nol, dan satu representasi.
Sekarang, bidang N bit dapat mengkodekan nilai 2 ^ N. Kurangi satu dalam komplemen 2, dan Anda memiliki 2 ^ N-1 = 2 ^ (N-1) + 2 ^ (N-1) + 1. Karena representasi untuk nol adalah semua nol bit, dan tanda + adalah nol, akan ada satu lagi representasi bukan nol yang mungkin dengan bit tanda diatur ke 1.
Ini adalah cara yang sangat panjang untuk mengatakan komplemen 2's mewakili nilai dalam kisaran - (2 ^ (N-1)) .. + (2 ^ (N-1) - 1).
Komplemen 1 sebenarnya memiliki keunggulan dibandingkan komplemen 2 jika Anda melakukan perhitungan pemrosesan sinyal digital bilangan bulat. Operasi komplemen 1 secara inheren terpotong menuju nol. Pelengkap 2 memotong menuju -infinity. Saya belajar yang satu ini dengan KERAS ...