Bit dan Byte - Blog UMY Community – Komunitas buat kita...
Transcript of Bit dan Byte - Blog UMY Community – Komunitas buat kita...
Departemen Teknik Elektro Institut Teknologi Bandung2005
EC3003 - Sistem Komputer
Bagian 2Representasi dan Manipulasi Data dalam Bit dan Byte
Bit dan Byte 2-2
Pembahasan
Representasi informasi dalam bentuk bitBiner/HeksadesimalRepresentasi byte
BilanganKarakter dan stringInstruksi
Manipulasi level bitAljabar BooleanEkspresi dalam bahasa C
Bit dan Byte 2-3
Representasi Berbasis 10
Representasi bilangan berbasis 10Berasal dari jari manusia, dikenal sebagai ‘digit’Representasi yang biasa digunakan dalam transaksi finansialDigunakan juga dalam notasi ilmiah
1.2345 x 104
Sulit diimplementasikan secara elektronikSulit untuk disimpan
ENIAC (komputer elektronik pertama) menggunakan 10 tabung hampa untuk mengimplementasikan satu digit
Sulit untuk dikirimkanPerlu kepresisian tinggi untuk mengkodekan 10 level sinyal pada satu kawat
Sulit untuk mengimplementasikan fungsi logika digitalPenjumlahan, perkalian, dll
Bit dan Byte 2-4
Representasi Biner
Representsi bilangan berbasis 21234510 direpresentasikan 1100000011100121.2010 direpresentasikan 1.0011001100110011[0011]…21.2345 X 104 direpresentasikan 1. 10000001110012 X 213
Implementasi elektronikElemen ‘bistable’ dapat disimpan dengan mudahAndal bila dikirimkan melalui kawat yang tidak akurat dan ber-derau
Fungsi aritmatika dapat diimplemetasikan secara langsung
0.0V
0.5V
2.8V
3.3V
0 1 0
Bit dan Byte 2-5
Mengkodekan Byte
1 byte = 8 bitMerepresentasikan bilangan :
Biner dari 000000002 hingga 111111112
Desimal dari 010 hingga 25510
Heksadesimal dari 0016 hingga FF16
Representasi bilangan berbasis 16Menggunakan karakter ‘0’ hingga ‘9’ dan ‘A’ hingga ‘F’Pada bahasa pemrograman C, FA1D3716ditulis 0xFA1D37 atau 0xfa1d37
0 0 00001 1 00012 2 00103 3 00114 4 01005 5 01016 6 01107 7 01118 8 10009 9 1001A 10 1010B 11 1011C 12 1100D 13 1101E 14 1110F 15 1111
HeksaDesim
al
Biner
Bit dan Byte 2-6
Ukuran Word
Setiap komputer memiliki “ukuran word” tertentuIndikator ukuran data integer dan data pointer (alamat)
Kebanyakan komputer saat ini, 1 word = 32 bit (4 byte)Membatasi alokasi alamat hingga 4GB (232 byte)
Dari alamat 0000.…0000 (0) hingga 1111.…1111 (4,294,967,295)
Nilai ini menjadi terlalu kecil bila digunakan pada aplikasi scientific dan database yang perlu menggunakan memori secara intensif
Sistem high-end menggunakan 64 bit (8 byte)Dapat mengalamati ≈ 1.8 X 1019 byte
Komputer dan compiler mendukung berbagai format datainteger dan floating point memiliki kode dan panjang data berbeda
Bit dan Byte 2-7
Organisasi Memori
Alamat merupakan lokasi penyimpanan word data dalam memori
Ukuran satu lokasi memori = satu byteAlamat menunjukkan lokasi byte pertama suatu wordAlamat word berikutnya bertambah 4 (32 bit) atau 8 (64 bit)
Perlu 4 lokasi memori untuk menyimpan data 32 bit
000000010002000300040005000600070008000900100011
32-bit Byte Alamat
0012001300140015
64-bit
Addr =??
Addr =??
Addr =??
Addr =??
Addr =??
Addr =??
0000
0004
0008
0012
0000
0008
Bit dan Byte 2-8
Representasi Data
Ukuran data pada format C (dalam byte)
Tipe data Tipikal 32-bit Alpha 64-bit Keteranganchar 1 1short int 2 2int 4 4long int 4 8float 4 4 single precisiondouble 8 8 double precisionlong double 8 8char * 4 8 pointer
Bit dan Byte 2-9
Aturan Pengurutan Byte
Bagaimana setiap byte suatu word disusun dalam memori ?Aturan :
Mesin Sun dan Mac adalah mesin “Big Endian”Byte LSB (Least Significant Byte) terletak di alamat paling TINGGI
Mesin Compaq Alpha dan PC adalah “Little Endian”Byte LSB (Least Significant Byte) terletak di alamat paling RENDAH
Bit dan Byte 2-10
Contoh Urutan Byte
Big Endian : byte LSB terletak di alamat paling tinggiLittle Endian : byte LSB terletak di alamat paling rendah
Contoh Variabel x memiliki representasi 4 byte : 0x01234567
dimana MSB = 0x01(0000 0001) dan LSB = 0x67(0110 0111)
Alamat awal yang diberikan oleh &x adalah 0x100
0x100 0x101 0x102 0x103
01 23 45 67
0x100 0x101 0x102 0x103
67 45 23 01
Big Endian
Little Endian
01 23 45 67
67 45 23 01
Bit dan Byte 2-11
Membaca Urutan ByteDisassembly
Mengartikan kode mesinDihasilkan oleh suatu program yang dapat membaca kode mesin
Contoh potongan program :
Alamat Kode instruksi Bahasa Assembly8048365: 5b pop %ebx8048366: 81 c3 ab 12 00 00 add $0x12ab,%ebx804836c: 83 bb 28 00 00 00 00 cmpl $0x0,0x28(%ebx)
Mengartikan bilangannilai : 0x12abmenjadi 4 bytes : 0x000012abdipisah per byte : 00 00 12 abdibalik : ab 12 00 00
Bit dan Byte 2-12
Representasi Byte Data
Kode untuk menampilkan representasi byte data Casting pointer menjadi unsigned char * menghasilkan array byte
typedef unsigned char *pointer;
void show_bytes(pointer start, int len){int i;for (i = 0; i < len; i++)printf("0x%p\t0x%.2x\n",
start+i, start[i]);printf("\n");
}
printf directives:%p : print pointer%x : print hexadecimalcasting = mengganti tipe data
menggunakan instruksi typedef
Bit dan Byte 2-13
Hasil Eksekusi show_bytes
int a = 12345;
printf("int a = 12345;\n");
show_bytes((pointer) &a, sizeof(int));
Hasil diperoleh (Linux) :
int a = 12345;
0x11ffffcb8 0x39
0x11ffffcb9 0x30
0x11ffffcba 0x00
0x11ffffcbb 0x00
Program utama :
Bit dan Byte 2-14
Representasi Integer
int A = 12345;int B = -12345;long int C = 12345;
Desimal: 12345
Biner: 0011 0000 0011 1001
Heksa: 3 0 3 9
39300000
Linux/Alpha A
3039
0000
Sun A
C7CFFFFF
Linux/Alpha B
CFC7
FFFF
Sun B
Representasi two’s complement
00000000
39300000
Alpha C
3039
0000
Sun C
39300000
Linux C
Bit dan Byte 2-15
Representasi Pointer (Alamat)int B = -12345;int *P = &B;
Alamat Alpha
Heksa: 1 F F F F F C A 0
Biner: 0001 1111 1111 1111 1111 1111 1100 1010 0000
01000000
A0FCFFFF
Alpha P
Alamat Sun
Heksa: E F F F F B 2 C Biner: 1110 1111 1111 1111 1111 1011 0010 1100
Mesin dan compiler berbeda akan memberikan lokasi obyek berbeda
FB2C
EFFF
Sun P
FFBF
D4F8
Alamat Linux
Heksa: B F F F F 8 D 4 Biner: 1011 1111 1111 1111 1111 1000 1101 0100
Bit dan Byte 2-16
Representasi Floating Point
Float F = 12345.0;
IEEE Single Precision Floating Point Representation
Heksa: 4 6 4 0 E 4 0 0 Biner: 0100 0110 0100 0000 1110 0100 0000 0000
12345: 1100 0000 1110 01
Tidak sama dengan representasi integer, tetapi konsisten di semua mesin
00E44046
Linux/Alpha F
E400
4640
Sun F
Memperlihatkan relasi dengan integer, walau tidak terlihat jelas
IEEE Single Precision Floating Point Representation
Heksa: 4 6 4 0 E 4 0 0 Biner: 0100 0110 0100 0000 1110 0100 0000 0000
12345: 1100 0000 1110 01
IEEE Single Precision Floating Point
Heksa: 4 6 4 0 E 4 0 0 Biner: 0100 0110 0100 0000 1110 0100 0000 0000
12345: 1100 0000 1110 01
Bit dan Byte 2-17
Representasi String
char S[6] = "12345";Strings dalam bahasa C
Direpresentasikan dalam array karakterSetiap karakter dikodekan dalam format ASCII
Kode karakter standar 7-bitKarakter “0” memiliki kode 0x30
Digit i memiliki kode 0x30+iString harus diakhiri dengan null
Karakter akhir = 0
KompatibilitasSetiap sistem yang menggunakan ASCII untuk menkodekan karakter akan memberikan hasil yang samaData teks umumnya bersifat platform-independen
Kecuali jika ada aturan lain tentang karakter akhir suatu baris
Linux/Alpha S Sun S
3334
3132
3500
3334
3132
3500
Bit dan Byte 2-18
Representasi Kode Mesin
Program dikodekan menjadi urutan instruksiMasing-masing berupa operasi sederhana
Operasi aritmatikaMembaca atau menulis memoriPercabangan
Instruksi dikodekan sebagai byteInstruksi pada Alpha, Sun, Mac menggunakan 4 byte
Reduced Instruction Set Computer (RISC)PC menggunakan instruksi dengan panjang yang variabel
Complex Instruction Set Computer (CISC)
Setiap mesin memiliki jenis instruksi dan pengkodean berbedaUmumnya kode tidak binary compatible
Program juga merupakan urutan byte
Bit dan Byte 2-19
Representasi Instruksiint sum(int x, int y){
return x+y;}
Mesin yang berbeda menggunakan instruksi dan kode berbeda
00003042
Alpha sum
0180FA6B
E008
81C3
Sun sum
90020009
Pada contoh ini, Alpha & Sun menggunakan dua instruksi dengan panjang 4 byte
Pada kasus lain memakai jumlah instruksi berbeda
PC menggunakan 7 instruksi dengan panjang 1, 2, dan 3 byte
Sama dengan NT dan LinuxNT / Linux tidak ‘fully binary compatible’
E58B
5589
PC sum
450C03450889EC5DC3
Bit dan Byte 2-21
Aljabar Boolean
Dikembangkan oleh George Boole pada abad 19Representasi logika aljabar : 1 = “TRUE” dan 0 = “FALSE”
ANDA&B = 1 jika A=1 dan B=1
& 0 10 0 01 0 1
~0 11 0
NOT~A = 1 jika A=0
ORA|B = 1 jika A=1 atau B=1
| 0 10 0 11 1 1
^ 0 10 0 11 1 0
Exclusive-Or (XOR)A^B = 1 jika A=1 atau B=1, tapi tidak keduanya
Bit dan Byte 2-22
Aplikasi Aljabar Boolean
A
~A
~B
B
Koneksi terjadi bila:
A&~B | ~A&B
Digunakan pada sistem digital oleh Claude ShannonTesis Master di MIT 1937 Pemikiran tentang jaringan saklar relay
Mengkodekan saklar tertutup = 1, saklar terbuka= 0
A&~B
~A&B = A^B
Bit dan Byte 2-23
Integer Aritmatika
Integer aritmatika memiliki struktur matematika yang dikenal sebagai “Ring”→ disebut juga Integer Ring
⟨Z, +, *, –, 0, 1⟩ = Ring+ adalah operasi “tambah”* adalah operasi “kali”– adalah penjumlahan inversi0 adalah identitas untuk tambah1 adalah identitas untuk kali
Bit dan Byte 2-24
Aljabar Boolean
⟨{0,1}, |, &, ~, 0, 1⟩ = Aljabar Boolean
| (OR) adalah operasi “tambah” & (AND) adalah operasi “kali”~ adalah operasi “komplemen” (bukan penjumlahan inversi)0 adalah identitas untuk tambah1 adalah identitas untuk kali
Bit dan Byte 2-25
Aljabar Boolean ≈ Integer RingKomutatif
A | B = B | A A + B = B + AA & B = B & A A * B = B * A
Asosiatif(A | B) | C = A | (B | C) (A + B) + C = A + (B + C)(A & B) & C = A & (B & C) (A * B) * C = A * (B * C)
DistributifA & (B | C) = (A & B) | (A & C) A * (B + C) = A * B + B * C
Identitas jumlahan dan perkalianA | 0 = A A + 0 = AA & 1 = A A * 1 = A
Nol adalah annihilator perkalianA & 0 = 0 A * 0 = 0
Negasi dari negasi~ (~ A) = A – (– A) = A
Bit dan Byte 2-26
Aljabar Boolean ≠ Integer RingBoolean: Distributif
A | (B & C) = (A | B) & (A | C) A + (B * C) ≠ (A + B) * (B + C)Boolean: Idempotency
A | A = A A + A ≠ A“A True” atau “A True” = “A True”
A & A = A A * A ≠ ABoolean: Absorpsi
A | (A & B) = A A + (A * B) ≠ A“A True” atau “A True dan B True” = “A True”
A & (A | B) = A A * (A + B) ≠ ABoolean: hukum komplemen
A | ~A = 1 A + –A ≠ 1“A True” atau “A False”
Ring: setiap elemen memiliki inversi penjumlahanA | ~A ≠ 0 A + –A = 0
Bit dan Byte 2-27
Boolean Ring
⟨{0,1}, ^, &, Ι, 0, 1⟩ = Boolean RingIdentik dengan integer mod 2 = ⟨Z2, +2, *2, –2, 0, 1⟩Ι adalah operasi identitas: Ι (A) = A
Sifat-sifat Boolean Ring :Komutatif penjumlahan A ^ B = B ^ AKomutatif perkalian A & B = B & AAsosiatif penjumlahan (A ^ B) ^ C = A ^ (B ^ C)Asosiatif perkalian (A & B) & C = A & (B & C)Distributif A & (B ^ C) = (A & B) ^ (B & C)0 identitas jumlah A ^ 0 = A1 identitas kali A & 1 = A0 annihilator kali A & 0 = 0Inversi penjumlahan A ^ A = 0
Bit dan Byte 2-28
Relasi Antar Operasi
Hukum DeMorganMengekspresikan & dalam bentuk |, dan sebaliknya
A & B = ~(~A | ~B)A and B true jika and hanya jika A nor B false
A | B = ~(~A & ~B)A or B true jika dan hanya jika A and B keduanya tidak false
Exclusive-OR menggunakan Inclusive ORA ^ B = (~A & B) | (A & ~B)
Hanya satu dari A and B true
A ^ B = (A | B) & ~(A & B)Salah satu A true, atau B true, tidak keduanya
Bit dan Byte 2-29
Operasi Aljabar Boolean
Operasi vektor bit
Operasi bitwise (bit per bit)
Seluruh sifat-sifat aljabar Boolean digunakan di sini
01101001& 01010101
01000001
01101001| 01010101
01111101
01101001^ 01010101
00111100~ 01010101
1010101001000001 01111101 00111100 10101010
Bit dan Byte 2-30
Representasi dan Operasi SetRepresentasi Set
Lebar w pada bit vector merepresentasikan subset {0, …, w–1}aj = 1 jika j ∈ I
A = 01101001 { 0, 3, 5, 6 }
76543210
B = 01010101 { 0, 2, 4, 6 }
76543210
Operasi SetA & B Irisan/Interseksi 01000001 { 0, 6 }A | B Union 01111101 { 0, 2, 3, 4, 5, 6 }A ^ B Berbeda simetrik 00111100 { 2, 3, 4, 5 }~ B Komplemen 10101010 { 1, 3, 5, 7 }
Bit dan Byte 2-31
Operasi Bit dalam COperasi &, |, ~, ^ terdapat dalam bahasa C
Dapat digunakan pada setiap tipe data integerlong, int, short, char
Setiap representasi bilangan dilihat sebagai bit vectorOperasi bilangan dilakukan secara bit-wise
Contoh (tipe data char)~0x41 --> 0xBE~010000012 --> 101111102
~0x00 --> 0xFF~000000002 --> 111111112
0x69 & 0x55 --> 0x41011010012 & 010101012 --> 010000012
0x69 | 0x55 --> 0x7D011010012 | 010101012 --> 011111012
Bit dan Byte 2-32
Operasi Logika dalam COPERASI LOGIKA BERBEDA DENGAN OPERASI BIT
Operator logika : &&, ||, !0 dipandang sebagai “FALSE”Segala sesuatu yang tidak nol dipandang sebagai “TRUE”Selalu menghasilkan 0 atau 1Terminasi awal
Operasi a && 5/a tidak akan menyebabkan pembagian dengan nol
Contoh (tipe data char)!0x41 --> 0x00!0x00 --> 0x01!!0x41 --> 0x010x69 && 0x55 --> 0x010x69 || 0x55 --> 0x01
p && *p
Bit dan Byte 2-33
Operasi ShiftShift kiri: x << y
Shift argumen x ke kiri sebanyak yposisi
Membuang bit paling kiriBagian kanan diisi dengan 0
Shift kanan: x >> yShift argumen x ke kanan sebanyak y posisi
Membuang bit paling kanan
Logical shiftBagian kiri diisi dengan 0
Arithmetic shiftReplikasi MSB bagian kananDigunakan pada representasi integer two’s complement
01100010Argumen x
00010000<< 3
00011000Log. >> 2
00011000Arit. >> 2
10100010Argumen x
00010000<< 3
00101000Log. >> 2
11101000Arit. >> 2
0001000000010000
0001100000011000
0001100000011000
00010000
00101000
11101000
00010000
00101000
11101000
Bit dan Byte 2-34
Contoh Operasi XOR
void funny(int *x, int *y){
*x = *x ^ *y; /* #1 */*y = *x ^ *y; /* #2 */*x = *x ^ *y; /* #3 */
}
Bitwise XOR adalah bentuk penjumlahanSetiap nilai memiliki inversi jumlah (additive inverse) masing-masing
A ^ A = 0
BABeginBA^B1
(A^B)^B = AA^B2A(A^B)^A = B3ABEnd
*y*x
Bit dan Byte 2-35
Ringkasan
Semua berkisar tentang bit dan byteBilanganProgramTeks
Mesin yang berbeda memiliki aturan berbedaUkuran word Urutan byteRepresentasi
Aljabar Boolean adalah operasi matematikaDasarnya mengkodekan “FALSE” = 0, “TRUE” = 1Memiliki bentuk umum, digunakan pada operasi bit dalam CBaik digunakan untuk merepresentasikan dan memanipulasi set