2_1321003732523fffaa

download 2_1321003732523fffaa

of 5

Transcript of 2_1321003732523fffaa

  • 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