1 / 40

Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013

Bagian 3 Integer. Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013. IF5011 Sistem dan Arsitektur Komputer B. Pembahasan. Representasi dan pengkodean integer Unsigned Signed / two ’ s complement Operasi integer Penjumlahan Perkalian Pemrograman integer

Télécharger la présentation

Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bagian 3Integer Sekolah Teknik Elektro dan InformatikaInstitut Teknologi Bandung2013 IF5011 Sistem dan Arsitektur Komputer B

  2. Pembahasan • Representasi dan pengkodean integer • Unsigned • Signed / two’s complement • Operasi integer • Penjumlahan • Perkalian • Pemrograman integer • Aturan pada C • Overflow • Operasi shift pada perkalian atau pembagian dengan 2.

  3. Representasi Integer • Integer direpresentasikan dengan dua cara : • Bilangan tidak negatif (unsigned) • Bilangan negatif, nol dan positif (two’s complement/signed) • Tipe data integer pada bahasa C :

  4. Pengkodean Integer Unsigned : B2U(X) : binary to unsigned, dgn panjang w bit memetakan urutan ‘0’ dan ‘1’ sepanjang w bit menjadi bilangan tidak negatif Signed / Two’s complement : B2T(X) : binary to two’s comp, dgn panjang w bit bit tanda • Pada two’s complement, bit MSB digunakan sebagai bit tanda • 0 untuk bilangan tidak negatif • 1 untuk bilangan negatif

  5. Contoh Pengkodean Integer • Nilai numerik untuk setiap kemungkinan digit (asumsi w = 4)

  6. Contoh Pengkodean Integer short int x = 12345 short int y = -12345 • short pada C memiliki ukuran 2 byte

  7. Nilai Minimum dan Maksimum • Nilai unsigned • UMin = 0 000…0 • UMax = 2w – 1 111…1 • Nilai two’s complement • TMin = –2w–1 100…0 • TMax = 2w–1 – 1 011…1 Nilai untuk w = 16

  8. Ukuran Word Berbeda • Perhatikan : • |TMin | = TMax + 1 • Range pada two’s complement berbentuk asimetrik • Dapat menjadi sumber bug • UMax = 2 * TMax + 1

  9. X B2U(X) B2T(X) 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 –8 1001 9 –7 1010 10 –6 1011 11 –5 1100 12 –4 1101 13 –3 1110 14 –2 1111 15 –1 Nilai Numerik Signed dan Unsigned • Ekivalensi • Kode sama untuk nilai non negatif • Unik • Setiap pola bit merepresentasikan nilai integer yang unik • Setiap representasi integer memiliki kode bit yang unik  Dapat dipetakan terbalik • U2B(x) = B2U-1(x) • Pola bit untuk unsigned integer • T2B(x) = B2T-1(x) • Pola bit untuk two’s comp integer

  10. Two’s Comp Unsigned T2U x ux T2B B2U X Pola bit tetap sama Relasi Antara Signed dan Unsigned

  11. Casting Signed ke Unsigned • Bahasa C dapat melakukan casting dari Signed ke Unsigned • Nilai diperoleh • Tidak ada perubahan representasi bit • Nilai non negatif tidak berubah • ux = 12345 • Nilai negatif berubah menjadi nilai positif yang besar • uy = 53191 short int x = 12345; unsigned short int ux = (unsigned short) x; short int y = -12345; unsigned short int uy = (unsigned short) y;

  12. Casting Signed ke Unsigned uy = y + 2 * 32768 = y + 65536

  13. Signed dan Unsigned dalam C • Konstanta • Secara default dianggap sebagai signed integer • Unsigned jika terdapat “U” sebagai suffix 0U, 4294967259U • Casting • Casting secara eksplisit antara signed dan unsigned sama dengan U2T dan T2U int tx, ty; unsigned ux, uy; tx = (int) ux; uy = (unsigned) ty; • Casting implicit juga terjadi pada assignment dan pemanggilan prosedur tx = ux; uy = ty;

  14. Casting Surprise • Penjelasan ekspresi • Jika unsigned dan signed dicampurkan dalam satu ekspresi, maka secara implisit nilai signed di-cast menjadi unsigned • Termasuk operasi perbandingan <, >, ==, <=, >= • Contoh untuk W = 32 • Konstanta1 Konstanta2 Relasi Evaluasi 0 0U -1 0 -1 0U 2147483647 -2147483648 2147483647U -2147483648 -1 -2 (unsigned) -1 -2 2147483647 2147483648U 2147483647 (int) 2147483648U 0 0U == unsigned -1 0 < signed -1 0U > unsigned 2147483647 -2147483648 > signed 2147483647U -2147483648 < unsigned -1 -2 > signed (unsigned) -1 -2 > unsigned 2147483647 2147483648U < unsigned 2147483647 (int) 2147483648U > signed

  15. UMax UMax – 1 TMax + 1 TMax TMax Unsigned Range 0 0 2’s Comp. Range –1 –2 TMin Penjelasan Casting Surprise • 2’s Comp.  Unsigned • Urutan terbalik • Negatif  Positif dengan nilai besar

  16. w X • • • • • • X • • • • • • w k Ekstensi Tanda • Tugas : • Diberikan bilangan signed integer x dengan w-bit • Konversi menjadi integer w+k-bit dengan nilai sama • Aturan : • Bit tanda dicopy sebanyak k : • X = xw–1 ,…, xw–1 , xw–1 , xw–2 ,…, x0 MSB dicopy sebanyak k

  17. Desimal Heksadesimal Biner 12345 x 30 39 00110000 00111001 12345 ix 00 00 30 39 00000000 00000000 00110000 00111001 -12345 y CF C7 11001111 11000111 -12345 iy FF FF CF C7 11111111 11111111 11001111 11000111 Contoh Ekstensi Tanda short int x = 12345; int ix = (int) x; short int y = -12345; int iy = (int) y; • Konversi data integer dari kecil ke besar • Compiler C secara otomatis melakukan ekstensi tanda

  18. w X - • • • X - + • • • w+1 Pembuktian Ekstensi Tanda • Membuktikan kebenaran, dengan induksi pada k • Tahap induksi : Menambah satu bit tidak mengubah nilai • Kunci penyelesaian : –2w–1 = –2w +2w–1 • Perhatikan bobot pada bit yang lebih atas : X–2w–1xw–1 X–2wxw–1+ 2w–1xw–1 = –2w–1xw–1

  19. -1 x 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 + ~x 0 1 1 0 0 0 1 0 Bilangan Negatif • Membuat bilangan negatif dengan operasi komplemen dan increment • Dapat dilakukan sesuai aturan pada 2’s Complement ~x + 1 == -x • Komplemen • Observasi: ~x + x == 1111…112 == -1 • Increment • ~x + x + (-x + 1) == -1 + (-x + 1) • ~x + 1 == -x

  20. Contoh Komplemen + Increment x = 12345 0

  21. • • • • • • • • • • • • Penjumlahan Unsigned u Operand: w bit v + Hasil penjumlahan : w+1 bit u + v UAddw(u , v) Abaikan carry : w bit • Fungsi penjumlahan standar • carry output diabaikan • Implementasi Modular Arithmetic s = UAddw(u , v) = u + v mod 2w

  22. Penjumlahan Integer Add4(u , v) • Penjumlahan integer • Integer 4-bit u, v • Hitung hasil penjumlahan Add4(u , v) • Nilai bertambah secara linier dengan u dan v • Membentuk permukaan planar v u

  23. 2w+1 2w 0 Penjumlahan Unsigned Overflow • Berputar • Jika hasil penjumlahan ≥ 2w • Sebanyak-banyaknya satu kali UAdd4(u , v) Hasil sesungguhnya Overflow v u Hasil modular

  24. Sifat Matematika • Penjumlahan modular membentuk suatu kelompok Abelian • Tertutup pada penjumlahan 0   UAddw(u , v)     2w –1 • Komutatif UAddw(u , v)  =   UAddw(v , u) • Asosiatif UAddw(t, UAddw(u , v))  =   UAddw(UAddw(t, u ), v) • 0 adalah identitas penjumlahan UAddw(u , 0)  =  u • Setiap elemen memiliki inversi penjumlahan • Bila UCompw (u )  = 2w – u UAddw(u , UCompw (u ))  =  0

  25. • • • • • • • • • • • • Penjumlahan Two’s Complement u Operan : w bit v + Hasil penjumlahan : w+1 bit u + v TAddw(u , v) Abaikan carry : w bit • Tadd dan UAdd memiliki perilaku bit yang sama • Penjumlahan signed dan unsigned pada C: int s, t, u, v; s = (int) ((unsigned) u + (unsigned) v); t = u + v • Diperoleh s == t

  26. Hasil Sesungguhnya 0 111…1 2w–1 Hasil TAdd 0 100…0 2w –1 011…1 0 000…0 0 000…0 PosOver TAdd(u , v) 1 100…0 –2w –1 100…0 > 0 –2w 1 000…0 v < 0 < 0 > 0 u NegOver Karakterisasi TAdd Hasil penjumlahan sesungguhnya memerlukan w+1 bit MSB dibuang Perlakukan bit sisanya sebagai integer 2’s comp PosOver NegOver (NegOver) (PosOver)

  27. Penjumlahan 2’s Complement NegOver • Nilai • 4-bit two’s comp. • Berkisar antara -8 dan +7 • Berputar • Jika jumlah  2w–1 • Menjadi negatif • Sebanyak-banyak nya satu kali • Jika jumlah < –2w–1 • Menjadi positif • Sebanyak-banyak nya satu kali TAdd4(u , v) v u PosOver

  28. 2w–1 PosOver 2w –1 0 NegOver Mendeteksi Overflow • Tugas • Diketahuis = TAddw(u , v) • Tentukan jika s =Addw(u , v) • Contoh int s, u, v; s = u + v; • Aturan • Overflow jika : u, v < 0, s 0 (Overflow Negatif) u, v 0, s < 0 (Overflow Positif) ovf = (u<0 == v<0) && (u<0 != s<0);

  29. Sifat Matematika TAdd • Aljabar isomorphic • TAddw(u , v) = U2T(UAddw(T2U(u ), T2U(v))) • Keduanya memiliki pila bit sama • Tadd Two’s Complement membentuk group • Tertutup, Komutatif, Asosiatif, 0 sebagai identitas penjumlahan • Setiap elemen memiliki inversi penjumlahan Bila TCompw (u )  =  U2T(UCompw(T2U(u )) TAddw(u , TCompw (u ))  =  0

  30. Operasi Perkalian • Menghitung hasil kali sesungguhnya bilangan of w-bit x, y • signed atau unsigned • Jangkauan nilai • Unsigned: 0 ≤ x * y ≤ (2w – 1) 2 = 22w – 2w+1 + 1 • hingga 2w bits • Two’s complement min: x * y ≥ (–2w–1)*(2w–1–1) = –22w–2 + 2w–1 • hingga 2w–1 bits • Two’s complement maks:x * y ≤ (–2w–1) 2 = 22w–2 • hingga 2w bits,tetapi hanya bagi (TMinw)2 • Menjaga hasil eksak • Harus memperluas ukuran word sesuai dengan hasil perkalian • Dilakukan dalam software oleh “arbitrary precision” arithmetic packages

  31. • • • • • • • • • • • • • • • Perkalian Unsigned Dalam C u Operan : w bit v * u · v Hasil kali : 2*w bit UMultw(u , v) Abaikan w bit : w bit Fungsi perkalian standar • Sebanyak w bit orde tinggi diabaikan Implementasi Modular Arithmetic UMultw(u , v) = u · v mod 2w

  32. Perkalian Signed dan Unsigned • Perkalian unsigned unsigned ux = (unsigned) x; unsigned uy = (unsigned) y; unsigned up = ux * uy • Memotong hasil kali menjadi bilangan w-bit up= UMultw(ux, uy) • Aritmatika modular : up = uxuy mod 2w • Perkalian two’s complement int x, y; int p = x * y; • Menghitung hasil kali eksak dari dua bilangan w-bit x, y • Memotong hasil kali menjadi bilangan w-bit p = TMultw(x, y)

  33. Perkalian Signed dan Unsigned • Perkalian unsigned unsigned ux = (unsigned) x; unsigned uy = (unsigned) y; unsigned up = ux * uy • Perkalian two’s complement int x, y; int p = x * y; • Relasi • Perkalian signed memberikan hasil bit sama dengan unsigned • up == (unsigned) p

  34. • • • Perkalian Kelipatan 2k dgn Shift • Operasi • u << k menghasilkan u * 2k • keduanya signed dan unsigned • Contoh : • u << 3 == u * 8 • u << 5 - u << 3 == u * 24 • Pada banyak mesin, ‘shift and add’ lebih cepat dari perkalian • Compiler menghasilkan kode ini secara otomatis k u • • • Operan : w bit 2k * 0 ••• 0 1 0 ••• 0 0 u · 2k Hasil kali : w+k bit 0 ••• 0 0 UMultw(u , 2k) ••• 0 ••• 0 0 Abaikan k bit : w bit TMultw(u , 2k)

  35. ••• ••• Pembagian Kelipatan 2k dgn Shift • Pembagian unsigned • u >> k menghasilkan  u / 2k  • Menggunakan logical shift k u Binary Point ••• Operan : 2k / 0 ••• 0 1 0 ••• 0 0 u / 2k Pembagian : . 0 ••• ••• Hasil : u / 2k 0 ••• •••

  36. ••• k x Binary Point ••• Operan : 2k / 0 ••• 0 1 0 ••• 0 0 ••• x / 2k Pembagian : . 0 ••• ••• Hasil : RoundDown(x / 2k) 0 ••• ••• Pembagian Kelipatan 2k dgn Shift • Pembagian signed • x >> k menghasilkan  x / 2k • Mengunakan arithmetic shift • Rounding ke arah yang salah jika u < 0

  37. Koreksi Pembagian dgn 2k • Pembagian bilangan negatif dengan 2k • Ingin diperoleh  x / 2k (Rounding menuju 0) • Dihitung  (x+2k-1)/ 2k • Pada C: (x + (1<<k)-1) >> k • Bias pembilang mendekati 0 • Kasus 1: Tidak ada rounding k u Pembilang : 1 ••• 0 ••• 0 0 +2k +–1 0 ••• 0 0 1 ••• 1 1 Binary Point 1 ••• 1 ••• 1 1 Penyebut : / 2k 0 ••• 0 1 0 ••• 0 0  u / 2k . 0 1 ••• 1 1 1 ••• 1 ••• 1 1 • Tidak ada pengaruh dari bias

  38. Koreksi Pembagian dgn 2k Kasus 2 : Rounding k x Pembilang : 1 ••• ••• +2k +–1 0 ••• 0 0 1 ••• 1 1 1 ••• ••• ditambah 1 Binary Point 2k Penyebut : / 0 ••• 0 1 0 ••• 0 0  x / 2k . 0 1 ••• 1 1 1 ••• ••• • Bias menambah 1 pada hasil akhir ditambah 1

  39. Sifat-Sifat Aritmatika Unsigned • Perkalian unsigned dengan penjumlahan membentuk ring komutatif • Penjumlahan adalah kelompok komutatif • Tertutup pada perkalian 0   UMultw(u , v)    2w –1 • Komutatif perkalian UMultw(u , v)  =   UMultw(v , u) • Asosiatif perkalian UMultw(t, UMultw(u , v))  =   UMultw(UMultw(t, u ), v) • 1 adalah identitas perkalian UMultw(u , 1)  =  u • Distributif UMultw(t, UAddw(u , v))  =   UAddw(UMultw(t, u ), UMultw(t, v))

  40. Sifat-Sifat Aritmatika 2’s Comp • Aljabar isomorphic • Perkalian dan penjumlahan unsigned • Pemotongan hingga w bit • Perkalian dan penjumlahan two’s complement • Pemotongan hingga w bits • Keduanya membentuk Ring • Isomorphic pada integer ring mod 2w • Perbandingan dengan aritmatika integer • Keduanya adalah ring • Integers mengijinkan urutan sifat seperti : u > 0 u + v > v u > 0, v > 0 u · v > 0 • Sifat-sifat tersebut tidak berlaku pada aritmatika two’s complement TMax + 1 == TMin 15213 * 30426 == -10030 (16-bit words)

More Related