Anda di halaman 1dari 2

Homework #1

1. Diberikan suatu potongan kode program dalam bahasa C :


#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 */

a. Lengkapi kode program tersebut agar fungsi-fungsi tersebut dapat dikompilasi


dan dieksekusi.
b. Tentukan keluaran dari program tersebut bila diberi masukan val = 12345.
Jelaskan apa yang diperlihatkan pada keluaran tersebut.
c. Jelaskan cara kerja setiap fungsi yang terdapat pada kode program di atas.
2. Diberikan suatu potongan kode program di bawah ini, beri uraian singkat tentang apa
yang diperlihatkan pada hasil eksekusinya. Apakah komputer anda termasuk mesin
big endian atau little endian ?

/* $begin simple-show */
void simple_show()
{
int val = 0x12345678;
byte_pointer valp = (byte_pointer) &val;
show_bytes(valp, 1); /* A. */
show_bytes(valp, 2); /* B. */
show_bytes(valp, 3); /* C. */
}
/* $end simple-show */

Juga kerjakan soal dari buku Bryant and OHallaron (2nd Ed) untuk nomor 2.59, 2.61,
2.81, 2.84, 2.86, 2.87, 2.88.

Anda mungkin juga menyukai