Anda di halaman 1dari 4

Tugas Pendahuluan

1. Bagaimana tipe data float dan double disimpan dalam memory komputer?
Berapakah rentang (nilai minimum dan nilai maksimum) dari tipe data float dan
double di luar NaN dan Inf?
Tipe Data Ukuran Rentang
Float 4 byte 1.1754944E-038 – 3.4028235E+038
Double 8 byte 2.2250739E-308 – 1.7976931E+308

2. Perbedaan antara logical right shift dengan arithmetic right shift terletak pada cara pengisian bit
MSB (Most Significant Byte). Pada logical right shift, bit MSB yang baru diisi dengan nilai nol,
sedangkan pada arithmetic right shift bit MSB diisi sesuai dengan bit MSB sebelumnya sebelum
di-shift dari variabel tersebut berdasarkan pada aturan two’s complement.

3. A. Berikut adalah ukuran structure dari daftar_NA_1 dan daftar_NA_2:

B. Perbedaan ukuran antara daftar_NA_1 dan daftar_NA_2terjadi karena compiler secara


otomatis melakukan alignment data-data yang ada pada structure dengan padding. Ketika terjadi
proses tersebut, ada beberapa alamat yang kosong atau tidak disusun secara berurutan saat
melakukan penyusunan data.

4. Diketahui deklarasi array dua dimensi . Bagaimana komputer menyimpan array ini di
dalam memory, Gambarkan bentuk penyimpanan array dua dimensi ini di dalam
memory komputer.

Jawab : Pada array 2 dimensi, array akan dialokasikan dalam memori secara berurutan. Sebagai
contoh:

Gambaran di dalam memorinya adalah sebagai berikut:


Format matriks : A[indeks baris][indeks kolom] ; (disesuaikan dengan gambar di atas)

Indeks Matriks Alamat Isi (Nilai)


A[0][0] 0x1000 2
A[0][1] 0x1004 4
A[1][0] 0x1008 6
A[1][1] 0x100C 8

5. Diberikan contoh program sederhana sebagai berikut. Program ini akan


digunakan pada saat praktikum sehingga disarankan praktikan telah menyalin
source code program ini.
Praktikum Arsitektur Sistem Komputer (EL3111) | Tahun 2014-2015 | Semester Ganjil

// Praktikum EL3111 Arsitektur Sistem Komputer


// Modul : NA

// Percobaan : NA
// Tanggal : 10 Oktober 2016
// Kelompok : NA

// Nama (NIM) 1 : Praktikan 1

// Nama (NIM) 2 : Praktikan 2


// Nama File : printbitbyte.c
alamat dari variabel dalam memory
//
// Deskripsi
size = :
ukuranDemonstrasi Pointer
variabel dalam memory (sizeof)
void printByte(byte_pointer address, int size)

int i;

for (i = size-1; i >= 0; i--)

printf(" %.2x", address[i]);

printf("\n");

void printBit(size_t const size, void const * const address)

unsigned char *b = (unsigned char*) address;


unsigned char byte;
int i, j;
int space;
space=0;
printf(" ");
for (i=size-1;i>=0;i--)

for (j=7;j>=0;j--)

byte = b[i] & (1<<j);


Berikut adalah main program dari program yang dibuat:

#include <stdio.h>
#include <stdlib.h>
#include "printbitbyte.c"

int main()
{
int num;
printf("Masukkan bilangan: ");
scanf("%d",&num);
printBit(sizeof(int),&num);
printByte(&num,sizeof(int));
Halaman2dari4
return 0;
}

Berikut ini adalah file printbitbyte.c :

#include "printbitbyte.h"
#include <stdlib.h>
#include <stdio.h>

typedef unsigned char *byte_pointer;


// address = alamat dari variabel dalam memory
// size = ukuran variabel dalam memory (sizeof)
void printByte(byte_pointer address, int size)
{
int i;
for (i = size-1; i >= 0; i--)
{
printf(" %.2x", address[i]);
}
printf("\n");
}

void printBit(size_t const size, void const * const address)


{
unsigned char *b = (unsigned char*) address;
unsigned char byte;
int i, j;
int space;
space=0;
printf(" ");
for (i=size-1;i>=0;i--)
{
for (j=7;j>=0;j--)
{
byte = b[i] & (1<<j);
byte >>= j;
printf("%u", byte);
space++;
if (space>=4)
{
printf(" ");
space=0;
}
}
}
puts("");
}

Berikut adalah file printbitbyte.h yang dibuat:

#include <stdio.h>
#ifndef PRINTBITBYTE_H
#define PRINTBITBYTE_H 100

typedef unsigned char *byte_pointer;


void printByte(byte_pointer address,int size);
void printBit(size_t const size,void const *const address);
#endif
Praktikum Arsitektur Sistem Komputer (EL3111) | Tahun 2014-2015 | Semester Ganjil

Berikut adalah hasil dari simulasi program:

Halaman4dari4

Anda mungkin juga menyukai