Post on 14-Apr-2018
7/30/2019 2_1321003732523fffaa
1/5
MODUL 2:
REPRESENTASI DAN MANIPULASI LEVEL BIT
Praktikan: Agung Utama Putra (13210037)Asisten: Fadhlullah
Waktu Percobaan: 2 November 2012EL3110 Arsitektur Sistem Komputer
Sekolah Teknik Elektro dan Informatika
ITB
Abstrak
Praktikum kali ini membahas tentang representasi
bit dan operasi-operasi yang dilakukan pada level
bit.
Kata kunci: representasi, manipulasi, bit
1. Data Praktikum1.1 Fungsi bitXor(x,y)Input: x = 4; y = 5.
Output: 1
1.2 Fungsi oddBits()Input: tidak ada
Output: 0xAAAAAAAA
1.3 Fungsi getByte(x,n)Input: x = 0x123456789; n = 1
Output: 0x56
1.4 Fungsi bitMask(highbit,lowbit)Input: highbit = 5; lowbit = 3
Output: 0x38
1.5 Fungsi reverseByte(x)Input: x = 0x01020304
Output: 0x04030201
1.6 Fungsi tmax()Input: tidak ada
Output: 2147483647 (desimal) dan 0x7FFFFFFF
(heksadesimal)
1.7 Fungsi minBytes(x,y)Input: x = 0x15; y = 0x07
Output: 0xE
1.8 Fungsi shiftRegister(x)Input: x = 0x04 dan x = 0x13
Output: 0x93
Screenshot untuk percobaan 1-8:
Gambar 1: Semua fungsi berjalan dengan benar.1.9 Fungsi enkripsi dan dekripsi
Enkripsi
Input: data = 123456789; pass = 85
Output: 1376688192
Dekripsi
Input: data = 1376688192; pass = 85
Output: 123456789
Screenshot:
Gambar 2: Fungsi enkripsi dan dekripsi sudah benar.
7/30/2019 2_1321003732523fffaa
2/5
2. Analisis2.1 Fungsi bitXor(x,y)
Fungsi XOR sebenarnya adalah:
Karena operasi yang boleh digunakan adalah
negasi (~) dan AND (&), fungsi diatas perlu diubah
ke bentuk ekuivalennya, yaitu:
() ()
Hasil percobaan menunjukkan fungsi sudah benar.
2.2 Fungsi oddBits()Karena tipe data int 32 bit, fungsi dibuat agar
langsung mengeluarkan nilai 0xAAAAAAAA (atau
dalam binernya:
0b10101010101010101010101010101010
2.3 Fungsi getByte(x,n)Untuk mengambil byte ke-n dari masukan x,pertama x di-shift kanan sebanyak n*8 (1 byte = 8
bit). Karena sekarang byte yang diminta sudah
berada di digit terakhir, untuk mengambil byte
yang bersangkutan bisa dilakukan dengan
Atau, dengan mengkonversinya ke tipe data yang
berukuran 1 byte. Pada percobaan ini, dilakukan
cara kedua (mengkonversi ke 1 byte data).
Hasil percobaan menunjukkan fungsi sudah benar.
2.4 Fungsi bitMask(highbit,lowbit)Cara yang digunakan adalah dengan membuat 2
mask lebih dulu: hmask (untukhighbit) dan
lmask (untuk lowbit). Pada hmask, nilai
0xFFFFFFFF di-shift kiri sebanyak 31-
highbit, lalu dikembalikan lagi (di-shift kanan
sebanyak 31-highbit). Begitu juga dengan
lmask, nilai 0xFFFFFFFF di-shift kanan
sebanyak lowbit, lalu di-shift kiri lagi sebanyak
lowbit. Fungsi mengembalikan hasil AND nilai
hmask & lmask.
Hasil percobaan menunjukkan fungsi sudah benar.
2.5 Fungsi reverseByte(x)Fungsi reverseByte menggunakan fungsi
getByte yang sudah dibuat sebelumnya. Nilai
dari input x diambil mulai dari byte terakhir hingga
byte terdepan dengan getByte, dan
dikembalikan dengan urutan terbalik oleh
reverseByte (dengan memanfaatkan shift).
Hasil percobaan menunjukkan fungsi sudah benar.
2.6 Fungsi tmax()Dengan asumsi bahwa tipe data int adalah 32 bit,
fungsi tmax mengembalikan nilai minimum
integer yang dinegasikan (~(1
7/30/2019 2_1321003732523fffaa
3/5
LAMPIRAN
A. Kode bitXor.cint bitXor(int x, int y){
return ~( ~(~x & y) & ~(x & ~y) );
}
B. Kode mbitXor.c#include
int main(){
printf("%d\n",bitXor(4,5));
return 0;
}
C. Kode oddBits.cint oddBits(){
return 0xAAAAAAAA;
}
D. Kode moddBits.c#include
int main(){
printf("%#x\n",oddBits());
return 0;
}
E. Kode getByte.cint getByte(int x, int n){
return (char)(x>>(n> lowbit)
7/30/2019 2_1321003732523fffaa
4/5
I. Kode reverseBytes.cint reverseByte(int x){
return (getByte(x,0)
7/30/2019 2_1321003732523fffaa
5/5
P. Kode mshiftRegister.c#include
int accum;
int main(){
printf("%#x\n",shiftRegister(0x04));
printf("%#x\n",shiftRegister(0x13));
return 0;
}
Q. Kode tugas2enc.c (enkripsi)#include
int main(){
int data;
int pass;
printf("Enkripsi\n");
printf("Input data : "); scanf("%d",&data);
printf("Input pass : "); scanf("%d",&pass);
printf("Hasil enkripsi : %d\n",ed(data,pass));
return 0;
}
R. Kode tugas2dec.c (dekripsi)#include
int main(){
int data;
int pass;
printf("Dekripsi\n");
printf("Input data : "); scanf("%d",&data);
printf("Input pass : "); scanf("%d",&pass);
printf("Hasil dekripsi : %d\n",ed(data,pass));return 0;
}
S. Kode tugas2.c (berisi fungsi untuk enkripsi/dekripsi)int ed(int data, int pass){
int byte1 = pass; byte1 = byte1