Integer Arithmetic

Integer Aritmatika

ARITMATIKA INTEGER
Bagian ini akan membahas fungsi-fungsi aritmatik bilangan dalam representasi komplemen dua
Negasi
Pada notasi komplemen dua, pengurangan sebuah bilangan integer dapat dibentuk dengan menggunakan aturan berikut :
Anggaplah komplemen Boolean seluruh bit bilangan integer (termasuk bit tanda)
Perlakukan hasilnya sebagai sebuah unsigned binary integer, tambahkan 1.
Misal : 18 = 00010010 (komplemen dua)

Representasi Integer Positif, Negatif Dan Bilangan 0
  • Bila sebuah bilangan integer positif dan negatif yang sama direpresentasikan (sign-magnitude), maka harus ada representasi bilangan positif dan negatif yang tidak sama.
  • Bila hanya terdapat sebuah representasi bilangan 0 (komplemen dua), maka harus ada representasi bilangan positifdan negatif yang tidak sama.
  • Pada kasus komplemen dua, terdapat representasi bilangan n-bit untuk -2n, tapi tidak terdapat untuk 2n.


Aturan Untuk Mendeteksi Overflow
  1. Aturan Overflow :
    Bila dua buah bilangan ditambahkan, dan keduanya positif atau keduanya negatif, maka akan terjadi overflow bila dan hanya bila hasilnya memiliki tanda yang berlawanan, seperti pada contoh halaman 18 ((e),(f))
  2. Aturan Pengurangan :
    Untuk mengurangkan sebuah bilangan (subtrahend) dari bilangan lainnya (minuend), anggaplah komplemen dua subtrahend dan tambahkan hasilnya ke minuend.

Pembulatan
Teknik pembulatan yang sesuai dengan standard IEEE adalah sebagai berikut :
  1. Pembulatan ke Bilangan Terdekat : Hasil dibulatkan ke bilangan terdekat yang dapat direpresentasi.
  2. Pembulatan Ke Arah : Hasil dibulatkan ke atas ke arah tak terhingga positif.
  3. Pembulatan Ke Arah : Hasil dibulatkan ke atas ke arah tak terhingga negatif.
  4. Pembulatan Ke Arah 0 : Hasil dibulatkan ke arah 0

Pertimbangkan dua operasi aritmatika dasar (penambahan dan negasi, dari mana pengurangan dapat diturunkan dengan mudah) dan bagaimana mereka akan dilakukan pada bilangan bulat ditandatangani menggunakan empat representasi.

Peniadaan

Ditandatangani Magnitude

Hanya beralih bit tanda. Tidak ada yang lebih sederhana. Jika semua yang Anda ingin lakukan adalah meniadakan, maka ini adalah pemenang.

Komplemen Ones

Beralih semua bit. Ini adalah operasi sederhana dan cepat. Tidak ada sedikit tergantung pada setiap bit lain, sehingga ada tidak membawa, "riak", dll

Twos Pelengkap

Menggunakan operasi pelengkap berpasangan, yaitu beralih semua bit dan menambahkan 1. Ini adalah sedikit lebih lambat daripada meniadakan untuk melengkapi atau angka yang besarnya ditandatangani, namun masih bisa dilakukan dengan cepat dengan jumlah yang relatif kecil dari logika dalam komputer saat ini.

Kelebihan-2 ^ (N-1)

Gunakan "berpasangan melengkapi" operasi. (Karena satu-satunya perbedaan antara representasi dan berpasangan ini melengkapi adalah bahwa bit tanda terbalik, ini masuk akal.) Kelebihan-lain-angka tidak bekerja begitu sederhana, namun.

Tambahan

Ditandatangani Magnitude

Yang satu ini adalah yang terburuk. Jika tanda-tanda yang sama, tambahkan besaran dan menggunakan tanda yang sama. Jika tanda-tanda berbeda, maka Anda harus menentukan mana yang memiliki besarnya lebih besar. Tanda sama dengan satu, dan besarnya harus diperoleh dengan mengurangkan (tidak menambahkan) yang lebih kecil dari yang lebih besar. (Ini adalah cara Anda menandatangani aritmatika dengan tangan, tapi tidak begitu baik untuk logika digital.)
Contoh:
  -1 1001 lebih besar (5) 101
 5 0101 lebih kecil (1) 001
 - ---- ---
 +4 ????  Kurangi: 100 -> menambahkan tanda lebih besar -> 0100

 +1 1001 lebih besar (5) 101
 -5 0101 lebih kecil (1) 001
 - ---- ---
 -4 ????  Kurangi: 100 -> menambahkan tanda lebih besar -> 1100

 +1 0001  
 5 0101  
 - ----  
 +6 0110 Add.  Tinggalkan tanda saja. 

 -1 1001  
 -5 1101  
 - ----  
 -6 1110 Add.  Tinggalkan tanda saja. 
Entah baik sirkuit pengurangan dan penambahan sirkuit yang dibutuhkan, atau pengurangan dapat dilakukan dengan berpasangan melengkapi dan kemudian menambahkan, tetapi dalam kasus itu mengapa tidak menggunakan pelengkap berpasangan di tempat pertama ??

Kelebihan-2 ^ (N-1)

Aturannya adalah ini: Tambahkan kode menggunakan penambahan biner normal, maka beralih bit tanda. Contoh (menggunakan Kelebihan-8):
  -1 0111
 5 1101
 - ----
 +4 0100 -> beralih tanda -> 1100

 +1 1001
 -5 0011
 - ----
 -4 1100 -> beralih tanda -> 0100

 +1 1001  
 5 1101  
 - ----  
 +6 0110 -> beralih tanda -> 1110

 -1 0111  
 -5 0011  
 - ----  
 -6 1010 -> beralih tanda -> 0010 
Hanya penambah adalah diperlukan, tetapi ada satu (kecil) langkah tambahan yang terlibat.

Komplemen Ones

Ada cara sulit untuk melakukan hal ini satu: tambahkan angka, dan kemudian menambahkan membawa keluar dari bit tertinggi hasil (ini disebut "end-around-carry"). Contoh:
  -1 1110
 5 0101
 - ----
 4 (1) 0011 -> 0011 + 1 = 0100

 +1 0001
 -5 1010
 - ----
 -4 (0) 1011 -> 1011 + 0 = 1011

 +1 0001  
 5 0101  
 - ----  
 +6 (0) 0110 -> 0110 + 0 = 0110

 -1 1110 
 -5 1010
 - ----  
 -6 (1) 1000 -> 1000 + 1 = 1001 
Aneh, bukan? Sekali lagi, hanya penambah diperlukan tetapi dengan langkah tambahan yang bisa memakan waktu yang lama karena benar-benar Selain lengkap lagi!

Twos Pelengkap

Cukup tambahkan angka. Periode. (Tapi mengabaikan membawa keluar dari bit tertinggi.) Inilah sebabnya mengapa pelengkap berpasangan sekarang universal digunakan. Contoh:
  -1 1111
 5 0101
 - ----
 4 (1) 0100

 +1 0001
 -5 1011
 - ----
 -4 (0) 1100

 +1 0001  
 5 0101  
 - ----  
 +6 (0) 0110

 -1 1111 
 -5 1011
 - ----  
 -6 (1) 1010 
Jadi hanya tambahan satu diperlukan, dengan tidak ada langkah tambahan. Juga, operasi yang sama akan menambahkan kedua angka ditandatangani dan unsigned. Tidak ada perbedaan. Juga, overflow mudah dideteksi (meluap telah terjadi jika tanda hasilnya berbeda dari tanda-tanda kedua operan).

Pengurangan

Meniadakan kemudian tambahkan

Ekstensi:

Konversi dari satu ukuran representasi untuk ukuran yang lebih besar. Misalnya 8 bit untuk 16 bit menjadi 32 bit
  • OC atau TC: Isi bit high-order baru dengan salinan tanda bit.
  • SM: menyisipkan 0 bit antara tanda bit dan bit tua.
  • EN: menyisipkan kebalikan dari tanda bit antara tanda bit dan bit tua.
  • Unsigned: Cukup tambahkan 0 di


Dua di Komplemen adalah "pilihan yang tepat

  • menambahkan algoritma yang paling sederhana
  • representasi terbaik dari 0.
  • Urutan penghitungan alami (semacam)
  • self-pembalik
  • ekstensi mudah
  • kelemahan terbesar -2 N-1 adalah kasus khusus dan negasi lambat (tapi selain sangat cepat untuk membuat untuk itu)
  • setara dengan melakukan segala sesuatu dalam mod 2 n misalnya-1 = 15 mod 16 dan 1111 adalah 15 dalam biner unsigned.

Deteksi overflow

Menggunakan N bit, adalah mungkin bahwa jawaban untuk tambahan akan berada di luar rentang nilai representable. Hal ini diperlukan untuk mendeteksi ketika hal ini terjadi.
  • Unsigned: Melaksanakan top bit. CARRY OUT ini dibuat tersedia untuk program bahasa Assembly
  • TC: Overflow = tanda jawaban tidak sama dengan menandatangani kedua operan = membawa ke kolom terakhir tidak sama untuk melaksanakan kolom terakhir.

Penggunaan Heksadesimal

  • Digunakan sebagai singkatan untuk menghindari panjang, urutan panjang 0/1 itu.
  • Untuk mengubah urutan 0/1 yang panjang 0 mod 4 yang merupakan bilangan bulat, partisi urutan dari kanan (bawah bit order) dan menerjemahkan:
    • 0000-0
    • 0001-1
    • 0010-2
    • 0011-3
    • 0100-4
    • 0101-5
    • 0110-6
    • 0111-7
    • 1000-8
    • 1001-9
    • 1010 ke A
    • 1011 ke B
    • 1100 ke C
    • 1101 untuk D
    • 1110 E
    • 1111 untuk F

    Kiri paling hex bit akan 0-7 untuk bilangan positif dan 8-F untuk angka negatif di OC atau TC.
  • Untuk menemukan nilai dari sejumlah hex dalam 1 komplemen
    • dimulai dengan 0-7 melakukan hal yang biasa.
    • dimulai dengan 8-F pertama Anda mengurangi jumlah hex dari FFF ... F.
    kemudian melakukan hal yang biasa.
  • Untuk menemukan nilai dari sejumlah hex untuk melengkapi 2 itu
    • dimulai dengan 0-7 melakukan hal yang biasa.
    • dimulai dengan 8-F pertama Anda mengurangi jumlah hex dari FFF ... F dan tambahkan 1
      OR
      meninggalkan tertinggal 0 di hex # saja; kurangi terendah non-0 digit dari (10) 16; kurangi digit lainnya dari F
    kemudian melakukan hal yang biasa.

Contoh

  1. Apa nilai integer ditandatangani di TC dalam kata 16 bit dalam memori yang berisi C8AO?
  2. Bagaimana jika itu adalah unsigned integer?
  3. Bagaimana integer ditandatangani untuk 6C85?
  4. Unsigned?

Komentar

Posting Komentar

Postingan populer dari blog ini

Interrupt driven I/O

List Linier (Linked list) Dan Variasinya_Struktur Data

Menghitung Jarak Jatuh Peluru (C++)