Bit dan Byte - Blog UMY Community – Komunitas buat kita...

35
Departemen Teknik Elektro Institut Teknologi Bandung 2005 EC3003 - Sistem Komputer Bagian 2 Representasi dan Manipulasi Data dalam Bit dan Byte

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

Aljabar Boolean

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