Selasa, 18 Januari 2011

Implementasi Right Shift dan Left Shift di C

Implementasi Right Shift dan Left Shift di C

Implementasi dari Right Shift dan Left Shift.

lihat potongan source code C berikut:.....

#define M //konstanta pertama
#define N //konstanta kedua
int arith (int x, int y)
{
int result = 0;
result = x*M + y/N;
return result;
}

lalu source code ini dikompilasi dengan kompiler penyederhanaan biner dan menghasilkan keluaran seperti ini:

int t = x;
x = x << x =" x-t;" y =" y">> 2; //arithmetics shift
int x + y;

Sekarang pertanyaannya…

berapakah nilai konstanta N dan M?

nih penjelasannya…

untuk memulainya, karena nilai x dan y adalah inputan user, kita misalkan saja nilainya.

dimisalkan nilai x = 2 dan nilai y=8.

nilai x dan y di konversi ke dalam biner (32 bit) menjadi

x = 0000 … 0000 0010

y = 0000 … 0000 1000

sekarang, lihat lagi hasil kompilasinya…

nilai x di geser 4 bit ke kiri (x<<4) x =" 0000" x =" x-t." t =" x." x =" x" x =" 32" x =" 30" result =" x*M" m =" 30" m =" 30" m =" 30" m =" 15">> 2) secara arithmetic. hasilnya:

y = 000000 … 0000 10 (biner) = 2 (desimal)

sekarang kita hubungkan source awal dengan source hasil kompilasi :

result = x*M + y/N;

hubungkan dengan hasil kompilasi

int x + y;

disitu terlihat hasil y yang telah di-shift merupakan hasil dari y/N. Masukkan lagi ke persamaan

y / N = 2 (2 adalah hasil penggeseran)
8 / N = 2 (8 adalah nilai y yang dimisalkan tadi)
N = 8 / 2
N = 4

sekarang nilai M dan nilai N sudah didapat. Maka selesailah soal ini dengan hasil

N = 4
M = 15

kalo ada kesalahan mohon dikoreksi yah… ;-)
Implementasi Right Shift dan Left Shift di C

0 komentar:

Posting Komentar

Silahkan beri komentar dengan bijak dan jangan sampai komentar anda masuk dalam {COMMENTS SPAM}. Thanks