arsikom - tugas - Little Endian

3
Tugas 2 Arsitektur Sistem Komputer Little Endian 1. a. Lengkapi kode program tersebut agar fungsi-fungsi tersebut dapat dikompilasi dan dieksekusi #include <stdio.h> typedef unsigned char *byte_pointer; /* begin show-bytes */ void show_bytes(byte_pointer start, int len) { int i; for (i = 0; i < len; i++) printf(" %.2x", start[i]); printf("\n"); } void show_int(int x) { show_bytes((byte_pointer) &x, sizeof(int)); } void show_float(float x) { show_bytes((byte_pointer) &x, sizeof(float)); } void show_pointer(void *x) { show_bytes((byte_pointer) &x, sizeof(void *)); } /* end show-bytes */ /* begin test-show-bytes */ void test_show_bytes(int val) { int ival = val; float fval = (float) ival; int *pval = &ival; show_int(ival); show_float(fval); show_pointer(pval); } /* end test-show-bytes */ int main(){ int x; scanf("%d",&x); test_show_bytes(x); } b. Tentukan keluaran dari program tersebut bila diberi masukan val = 12345. Jelaskan apa yang diperlihatkan pada keluaran tersebut!

description

tugas arsikom

Transcript of arsikom - tugas - Little Endian

Page 1: arsikom - tugas - Little Endian

Tugas 2 Arsitektur Sistem Komputer

Little Endian

1. a. Lengkapi kode program tersebut agar fungsi-fungsi tersebut dapat dikompilasi dan dieksekusi

#include <stdio.h>typedef unsigned char *byte_pointer;/* begin show-bytes */void show_bytes(byte_pointer start, int len) { int i;

for (i = 0; i < len; i++)printf(" %.2x", start[i]);

printf("\n");}void show_int(int x) { show_bytes((byte_pointer) &x, sizeof(int));}void show_float(float x) { show_bytes((byte_pointer) &x, sizeof(float));}void show_pointer(void *x) { show_bytes((byte_pointer) &x, sizeof(void *));}/* end show-bytes *//* begin test-show-bytes */

void test_show_bytes(int val) { int ival = val; float fval = (float) ival; int *pval = &ival; show_int(ival); show_float(fval); show_pointer(pval);}/* end test-show-bytes */

int main(){ int x; scanf("%d",&x); test_show_bytes(x);}

b. Tentukan keluaran dari program tersebut bila diberi masukan val = 12345. Jelaskan apa yang diperlihatkan pada keluaran tersebut!

Page 2: arsikom - tugas - Little Endian

39 30 00 00 -> nilai 12345 dalam integer dalam bentuk hexa decimal

00 e4 40 46 -> nilai 12345 dalam floating point dalam bentuk hexa decimal

d4 fe 29 00 -> bentuk hexa decimal dari alamat penyimpanan nilai 12345

c. Jelaskan cara kerja setiap fungsi yang terdapat pada kode program di atas

show_bytes -> merubah bentuk decimal menjadi hexa decimal dan menampilkan hasilnya

show_int -> menerima inputan int dan memanggil procedur show_bytes sehingga ditampilkan nilai 12345 dalam integer dalam bentuk hexa decimal

show_float -> menerima inputan float dan memanggil procedur show_bytes sehingga ditampilkan nilai 12345 dalam float dalam bentuk hexa decimal

show_pointer -> menerima inputan decimal dan memanggil procedur show_bytes sehingga ditampilkan alamat dari nilai 12345 dalam bentuk hexa decimal

test_show_bytes -> menerima inputan dan memanggil procedure show_int, show_float, dan show_pointer.

2. Diberikan suatu potongan kode program di bawah ini, beri uraian singkat tentang apayang diperlihatkan pada hasil eksekusinya. Apakah komputer anda termasuk mesin ‘big endian’ atau ‘little endian’ ?

Page 3: arsikom - tugas - Little Endian

Dari hasil diatas, dapat disimpulkan bahwa mesin komputer yang digunakan adalah little endian. Karena pada keluaran ditampilkan hasil yang terbesar terlebih dahulu. Input yang dimasukan adalah 12345678. Angka 1 dan 2 tidak ditampilkan karena panjang baris yang ditampilkan hanya sampai 3.