Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013

Slides:



Advertisements
Presentasi serupa
TURUNAN/ DIFERENSIAL.
Advertisements

Pemrograman Terstruktur
Selamat Datang Dalam Kuliah Terbuka Ini
Keyword, Variabel, Konstanta, Tipe Data, Operator, dan Input / Output
Materi 3 Pelatihan Jaringan Komputer By Kustanto
Sistem Bilangan dan Konversi Bilangan
Subnetting Cara Cepat I (IP Kelas C)
Oleh : Ilmawan Mustaqim
PERTEMUAN MINGGU KE-4 REPRESENTASI DATA.
Pertemuan 2 DASAR PEMROGRAMAN.
DASAR-DASAR PEMROGRAMAN C
Oleh : Tim Hibah Pengajaran Mata Kuliah Teknologi Informasi Jurusan Matematika Pertemuan 4.
PERTEMUAN MINGGU KE-3 REPRESENTASI DATA.
ARITMETIKA KOMPUTER I. Pendahuluan
Arsitektur Komputer “Rangkaian Aritmatika”
DASAR-DASAR PEMROGRAMAN
Ema Maliachi,S.kom Bahasa Assembly Konversi Bilangan Pertemuan ke-2.
Sistem Bilangan dan Konversi Bilangan
FAKULTAS ILMU KOMPUTER UNIVERSITAS DIAN NUSWANTORO Pengantar Teknologi Informasi (Teori) Minggu ke-04 Oleh : Ibnu Utomo WM, M.Kom.
Sistem Bilangan dan Konversi Bilangan
ARCHITECTURE COMPUTER
Konsep dan Defenisi data 1Nurdiansah PTIK 09 UNM.
TURUNAN DIFERENSIAL Pertemuan ke
Induksi Matematika.
XVIII. RANGKAIAN REGISTER DAN COUNTER
Arsitektur & Organisasi
Sistem Bilangan dan Konversi Bilangan
02.1 Hari-2.
Induksi Matematik TIN2204 Struktur Diskrit.
Pemrograman JAVA TIB09 Data dan Variabel. Variabel Harus dideklarasikan terlebih dahulu Deklarasi variabel TypeData namaVariabel; Dapat dideklarasikan.
Bahan Kuliah Matematika Diskrit
ARITMATIKA DIGITAL Siswo Wardoyo, S.T., M.Eng.
Selamat Datang Dalam Kuliah Terbuka Ini
SISTEM BILANGAN DAN KODE BILANGAN
Pendahuluan 1.
Jurusan Teknik Elektro Fakultas Teknik UNTIRTA
© 2009 Fakultas Teknologi Informasi Universitas Budi Luhur Jl. Ciledug Raya Petukangan Utara Jakarta Selatan Website:
Luas Daerah ( Integral ).
Pengajar : ELIYANI, S.T., M.Kom Semester : I Tahun : 2012/ 2013
Operasi Aritmatika.
Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013
FUNGSI MATEMATIKA DISKRIT K- 6 Universitas Indonesia
Pemrograman Terstruktur
Pemrograman Visual Tipe Data dan Operator
7. 1 Bab 07 Menginput Nilai melalui Keyboard.
PENDAHULUAN.
Sumber : Rinaldi Munir, ITB
Sistem-Sistem Bilangan
MENJELASKAN SISTEM BILANGAN
Pengantar Sistem Komputer
REPRESENTASI FIX POINT DAN FLOATING POINT
Aritmatika Bilangan Biner
FUNGSI STRUKTUR DISKRIT K-8 Program Studi Teknik Komputer
Dasar Pemrograman ARRAY/LARIK.
BAB I SISTEM BILANGAN.
Elemen Dasar Java (2) As’ad Djamalilleil
Praktikum Struktur Data
OLEH : DANANG ERWANTO, ST
Kompleksitas Algoritma
Oleh Sumiasih, dayu mas, hitem wijana, artawan, swidiyasa MAHA SARASWATI DENPASAR Sistem Bilangan dan Konversi Bilangan.
Pengantar Komputer Teknik Sipil dan Perencanaan Universitas Gunadarma
IP Subnetting Oleh: Idris Winarno.
KOMUNIKASI DATA – ST014 SISTEM BILANGAN
OPERATOR Teknik Informatika Universitas Muhammadiyah Malang 2011 Pemrogramman Terstruktur.
Data dan Struktur Data.
Elemen-elemen dlm source code
Arsitektur Komputer Genap 2004/2005
Representasi Bilangan
Sistem-Sistem Bilangan
Sistem-Sistem Bilangan
Transcript presentasi:

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

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.

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.768 32.767 63.535 int unsigned [int] 32 bit (4 byte) -2.147.483.648 2.147.483.647 4.294.967.295

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

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 -23+21 = -6 1100 23+22 = 12 -23+22 = -4 1111 23+22+21+20 = 15 -23+22+21+20 = -1

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

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 00000000 00000000 11111111 11111111 Tmin Tmax -32768 32767 0x8000 0x7FFF 10000000 00000000 01111111 11111111 -1 0xFFFF

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

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

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

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;

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

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;

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 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

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

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

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

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

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

Contoh Komplemen + Increment x = 12345

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

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

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

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

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

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)

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

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

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

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

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

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)

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

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)

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  ••• •••

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

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

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

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))

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)