Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehAde Outsiders Telah diubah "9 tahun yang lalu
1
Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013
IF5011 Sistem dan Arsitektur Komputer B Bagian 3 Integer Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013
2
Pembahasan Representasi dan pengkodean integer Operasi 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 : Deklarasi C Ukuran Nilai Minimum Nilai Maksimum char unsigned char 8 bit (1 byte) -128 127 255 short [int] unsigned short [int] 16 bit (2 byte) 32.767 63.535 int unsigned [int] 32 bit (4 byte)
4
Pengkodean Integer Unsigned : Signed / Two’s complement :
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) Biner B2U4(X) B2T4(X) 0000 0011 21+20 = 3 21+20 = 3 1000 23 = 8 -23 = -8 1010 23+21 = 10 = -6 1100 23+22 = 12 = -4 1111 = 15 = -1
6
Contoh Pengkodean Integer
short int x = short int y = 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 Desimal Heksa Biner Umin Umax 65535 0x0000 0XFFFF Tmin Tmax -32768 32767 0x8000 0x7FFF -1 0xFFFF
8
Ukuran Word Berbeda Perhatikan : |TMin | = TMax + 1
Range pada two’s complement berbentuk asimetrik Dapat menjadi sumber bug UMax = 2 * TMax + 1
9
Nilai Numerik Signed dan Unsigned
X B2T(X) B2U(X) 0000 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 –8 8 –7 9 –6 10 –5 11 –4 12 –3 13 –2 14 –1 15 1000 1001 1010 1011 1100 1101 1110 1111 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
Relasi Antara Signed dan Unsigned
T2U T2B B2U Two’s Comp Unsigned Pola bit tetap sama x ux X Two’s Bin Unsg 0000 1 0001 7 0111 -8 1000 8 -7 1001 9 -2 1110 14 -1 1111 15
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 = ; unsigned short int ux = (unsigned short) x; short int y = ; unsigned short int uy = (unsigned short) y;
12
Casting Signed ke Unsigned
uy = y + 2 * 32768 = y
13
Signed dan Unsigned dalam C
Konstanta Secara default dianggap sebagai signed integer Unsigned jika terdapat “U” sebagai suffix 0U, U 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 0 0U == unsigned 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 U -1 -2 (unsigned) -1 -2 U (int) U 0 0U == unsigned -1 0 < signed -1 0U > unsigned > signed U < unsigned > signed (unsigned) > unsigned U < unsigned (int) U > signed
15
Penjelasan Casting Surprise
TMax TMin –1 –2 UMax UMax – 1 TMax + 1 2’s Comp. Range Unsigned 2’s Comp. Unsigned Urutan terbalik Negatif Positif dengan nilai besar
16
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 • • • X X w k MSB dicopy sebanyak k
17
Contoh Ekstensi Tanda Konversi data integer dari kecil ke besar
short int x = ; int ix = (int) x; short int y = ; int iy = (int) y; Desimal Heksadesimal Biner x 12345 30 39 ix y -12345 CF C7 iy FF FF CF C7 Konversi data integer dari kecil ke besar Compiler C secara otomatis melakukan ekstensi tanda
18
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–1 xw–1 X –2w xw–1 + 2w–1 xw–1 = –2w–1 xw–1 - • • • X X + w+1 w
19
Bilangan Negatif x ~x + -1
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 1 x ~x + -1
20
Contoh Komplemen + Increment
x = 12345
21
Penjumlahan Unsigned Fungsi penjumlahan standar
• • • Operand: w bit + v • • • Hasil penjumlahan : w+1 bit u + v • • • Abaikan carry : w bit UAddw(u , v) • • • Fungsi penjumlahan standar carry output diabaikan Implementasi Modular Arithmetic s = UAddw(u , v) = u + v mod 2w
22
Penjumlahan Integer Penjumlahan integer Integer 4-bit u, v
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
Penjumlahan Unsigned Berputar Jika hasil penjumlahan ≥ 2w
Overflow Berputar Jika hasil penjumlahan ≥ 2w Sebanyak-banyaknya satu kali UAdd4(u , v) Hasil sesungguhnya 2w 2w+1 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
• • • Operan : w bit + v • • • Hasil penjumlahan : w+1 bit u + v • • • Abaikan carry : w bit TAddw(u , v) • • • 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
Karakterisasi TAdd Hasil penjumlahan sesungguhnya memerlukan w+1 bit
2w –1 2w–1 Hasil Sesungguhnya Hasil TAdd 1 000…0 1 100…0 0 000…0 0 100…0 0 111…1 100…0 000…0 011…1 Hasil penjumlahan sesungguhnya memerlukan w+1 bit MSB dibuang Perlakukan bit sisanya sebagai integer 2’s comp PosOver u v < 0 > 0 NegOver PosOver TAdd(u , v) 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 TAdd4(u , v) v u PosOver
28
Mendeteksi Overflow Tugas Diketahui s = 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); 2w –1 2w–1 PosOver NegOver
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
• • • Operan : w bit * v • • • Hasil kali : 2*w bit u · v • • • • • • 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 ••• 1 ••• Hasil kali : w+k bit u · 2k • • • ••• UMultw(u , 2k) ••• ••• 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 ••• 1 ••• Pembagian : u / 2k . ••• ••• ••• Hasil : u / 2k ••• •••
36
Pembagian Kelipatan 2k dgn Shift
Pembagian signed x >> k menghasilkan x / 2k Mengunakan arithmetic shift Rounding ke arah yang salah jika u < 0 1 ••• x 2k / x / 2k Pembagian : Operan : k RoundDown(x / 2k) Hasil : . Binary Point
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 Pembilang : u 1 ••• ••• +2k +–1 ••• 1 ••• 1 1 Binary Point 1 ••• 1 ••• 1 1 Penyebut : / 2k ••• 1 ••• u / 2k . 1 ••• 1 1 1 ••• 1 ••• 1 1 Tidak ada pengaruh dari bias
38
Koreksi Pembagian dgn 2k
Kasus 2 : Rounding k Pembilang : x 1 ••• ••• +2k +–1 ••• 1 ••• 1 1 1 ••• ••• ditambah 1 Binary Point Penyebut : / 2k ••• 1 ••• x / 2k . 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 * == (16-bit words)
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.