Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Teknologi Industri

Overflow Biner

Satu peringatan dengan bilangan biner bertanda adalah overflow, di mana jawaban untuk masalah penambahan atau pengurangan melebihi besarnya yang dapat diwakili dengan jumlah bit yang dialokasikan. Ingat bahwa tempat bit tanda sudah diperbaiki dari awal masalah.

Dengan contoh masalah terakhir, kami menggunakan lima bit biner untuk mewakili besaran angka, dan bit paling kiri (keenam) sebagai bobot negatif, atau bit tanda. Dengan lima bit untuk mewakili besarnya, kami memiliki rentang representasi 2 5 , atau tiga puluh dua langkah bilangan bulat dari 0 hingga maksimum.

Ini berarti bahwa kami dapat mewakili angka setinggi +3110 (0011112 ), atau serendah -3210 (1000002 ).

Pembatasan Bidang Angka Enam-bit

Jika kita membuat masalah penjumlahan dengan dua bilangan biner, bit keenam digunakan untuk tanda, dan hasilnya melebihi +3110 atau kurang dari -3210 , jawaban kami akan salah. Ayo coba tambahkan 1710 dan 1910 untuk melihat bagaimana kondisi luapan ini bekerja untuk bilangan positif yang berlebihan:

Jawabannya (1001002 ), ditafsirkan dengan bit keenam sebagai -3210 tempat, sebenarnya sama dengan -2810 , bukan +3610 seperti yang seharusnya kita dapatkan dengan +1710 dan +1910 ditambahkan bersama! Jelas, ini tidak benar. Apa yang salah?

Jawabannya terletak pada batasan bidang angka enam bit di mana kita bekerja Karena besarnya jumlah yang benar dan tepat (3610 ) melebihi batas yang diizinkan untuk bidang bit yang ditentukan, kami memiliki kesalahan luapan .

Sederhananya, enam tempat tidak memberikan bit yang cukup untuk mewakili jumlah yang benar, jadi angka apa pun yang kita peroleh dengan menggunakan strategi membuang bit "carry" paling kiri akan salah.

Kesalahan serupa akan terjadi jika kita menambahkan dua angka negatif bersama-sama untuk menghasilkan jumlah yang terlalu rendah untuk bidang biner enam bit kita. Ayo coba tambahkan -1710 dan -1910 bersama-sama untuk melihat cara kerjanya (atau tidak berhasil, tergantung kasusnya!):

Jawaban (salah) adalah positif dua puluh delapan. Fakta bahwa jumlah sebenarnya dari negatif tujuh belas dan negatif sembilan belas terlalu rendah untuk direpresentasikan dengan benar dengan medan magnitudo lima bit dan bit tanda keenam adalah akar penyebab kesulitan ini.

Menggunakan Bit Ketujuh untuk Bit Tanda

Mari kita coba kedua masalah ini lagi, kecuali kali ini menggunakan bit ketujuh untuk bit tanda, dan mengizinkan penggunaan 6 bit untuk mewakili besaran:

Dengan menggunakan bidang bit yang cukup besar untuk menangani besarnya jumlah, kita sampai pada jawaban yang benar. Dalam contoh soal ini, kami dapat mendeteksi kesalahan luapan dengan melakukan soal penjumlahan dalam bentuk desimal dan membandingkan hasilnya dengan jawaban biner.

Misalnya, saat menambahkan +1710 dan +1910 bersama-sama, kami tahu bahwa jawabannya seharusnya menjadi +3610 , jadi ketika jumlah biner diperiksa menjadi -2810 , kami tahu bahwa ada sesuatu yang salah. Meskipun ini adalah cara yang valid untuk mendeteksi luapan, ini tidak terlalu efisien.

Lagi pula, seluruh ide pelengkapan adalah untuk dapat dengan andal menjumlahkan bilangan biner dan tidak perlu memeriksa ulang hasilnya dengan menambahkan bilangan yang sama dalam bentuk desimal! Hal ini terutama berlaku untuk tujuan membangun sirkuit elektronik untuk menjumlahkan jumlah biner bersama:sirkuit harus dapat memeriksa dirinya sendiri untuk overflow tanpa pengawasan manusia yang sudah tahu apa jawaban yang benar.

Yang kami butuhkan adalah metode deteksi kesalahan sederhana yang tidak memerlukan aritmatika tambahan. Mungkin solusi paling elegan adalah memeriksa tanda dari jumlah tersebut dan bandingkan dengan tanda-tanda bilangan yang ditambahkan.

Jelas, dua bilangan positif yang dijumlahkan akan memberikan hasil yang positif, dan dua bilangan negatif yang dijumlahkan akan memberikan hasil yang negatif. Perhatikan bahwa setiap kali kita memiliki kondisi overflow dalam contoh soal, tanda penjumlahan selalu berlawanan dari dua angka yang ditambahkan:+1710 ditambah +1910 memberi -2810 , atau -1710 ditambah -1910 memberikan +2810 .

Dengan memeriksa tanda-tandanya saja, kita dapat mengetahui bahwa ada sesuatu yang salah. Tetapi bagaimana dengan kasus di mana angka positif ditambahkan ke angka negatif? Tanda apa yang harus dijumlahkan agar benar. Atau, lebih tepatnya, tanda penjumlahan apa yang menunjukkan kesalahan luapan?

Jawabannya sama elegannya:tidak akan pernah menjadi kesalahan overflow ketika dua angka dari tanda yang berlawanan ditambahkan bersama-sama! Alasan untuk ini terlihat ketika sifat overflow dipertimbangkan. Overflow terjadi ketika besarnya suatu angka melebihi rentang yang diizinkan oleh ukuran bidang bit.

Jumlah dari dua angka yang ditandatangani secara identik mungkin sangat jauh melebihi kisaran bidang bit dari kedua angka tersebut, dan dalam hal ini kemungkinan meluap. Namun, jika angka positif ditambahkan ke angka negatif, jumlahnya akan selalu lebih dekat ke nol daripada salah satu dari dua angka yang ditambahkan:besarnya harus kurang dari besaran salah satu bilangan asli, sehingga overflow tidak mungkin terjadi.

Untungnya, teknik deteksi luapan ini mudah diterapkan dalam sirkuit elektronik, dan ini merupakan fitur standar dalam sirkuit penambah digital:topik untuk bab selanjutnya.

LEMBAR KERJA TERKAIT:


Teknologi Industri

  1. Elektronik sebagai Ilmu
  2. Menyiapkan Lab Rumah
  3. Penggunaan Voltmeter
  4. Penghitung Biner 3-bit
  5. Penomoran Desimal versus Biner
  6. Penomoran Oktal dan Heksadesimal
  7. Pengurangan Biner
  8. Apa Itu Pipa Luapan?
  9. Kontainer dibuat untuk lengan di x86
  10. Memulai dengan Go di PLCnext