Tipe Data (Operator-Operator Manipulasi Bit)

Ini Hanyalah Sebagian kecil dari penerapan Matematika dalam ilmu lain, dalam hal ini pada ilmu komputer. Kali ini kita lebih memanfaatkan Logika Matematika. Tulisan ini saya buat setelah teman-teman dan siswa saya bertanya untuk apa kita belajar Logika Matematika yg ada pada Mata Kuliah Pengantar Dasar Matematika. Semoga Bermanfaat. Sebelumnya, Kalau Anda ingin menguji Program ini, tentunya anda harus punya C++, bisa didonload di wwww.misrosoft.com. Untuk keperluan memanipulasi data dalam bentuk bit, Turbo C menyediakan operator-operator berikut :

Operator

Operasi

<<

Geser bit ke kiri

>>

Geser bit ke kanan

&

Dan (AND)

|

Atau (OR)

^

XOR

~

NOT (Komplemen)

Seluruh operator manipulasi bit hanya dikenakan pada operand / variabel / angka yang bertipe bilangan bulat (int, char, long).

Prioritas eksekusinya adalah

TertinggiTerendah ~<< >>

&

^

|

Tabel Kebenaran dari tiap operator manipulasi bit adalah :

A

B

~A

A & B

A | B

A ^ B

0

0

1

0

0

0

0

1

1

0

1

1

1

0

0

0

1

1

1

1

0

1

1

0

Contoh :

#include <stdio.h>#include <conio.h>

main()

{

    unsigned int x,y,and,or,not,xor;

    x=78;// 41h

    y=520;// 208h

 

    and=x & y;

    or=x | y;

    xor=x ^ y;

    not = ~y;

    clrscr();

    printf(“x     : %6u : %4Xh\n”,x,x);

    printf(“y     : %6u : %4Xh\n”,y,y);

    printf(“————————–\n”);

    printf(“x & y : %6u : %4Xh\n”,and,and);

    printf(“x | y : %6u : %4Xh\n”,or,or);

    printf(“x ^ y : %6u : %4Xh\n”,xor,xor);

    printf(“  ~y  : %6u : %4Xh\n”,not,not);

    getch();

    return 0;

}

Jika di-Run akan menghasilkan :

x     :     78 :   4Ehy     :    520 :  208h

————————–

x & y :      8 :    8h

x | y :    590 :  24Eh

x ^ y :    582 :  246h

  ~y  :  65015 : FDF7h

Pembuktian :

x     :     78 :   4eh : 00000000 01001110y     :    520 :  208h : 00000010 00001000
x & y :              x : 00000000 01001110                     y : 00000010 00001000

                         —————– & (and)

                 x & y : 00000000 00001000 = 8h = 8 (terbukti)

x | y :              x : 00000000 01001110                     y : 00000010 00001000

                         —————– | (or)

                 x | y : 00000010 01001110 = 24eh = 590 (terbukti)

x ^ y :              x : 00000000 01001110                     y : 00000010 00001000

                         —————– ^ (xor)

                 x ^ y : 00000010 01000110 = 246h = 582 (terbukti)

  ~y  :              y : 00000010 00001000                         —————– ~ (komplemen)

                    ~y : 11111101 11110111 = FDF7h = 65015 (terbukti)

Operator-operator pergeseran bit, berguna untuk menggeserkan bit yang ada dalam suatu variabel.

Contoh :

#include <stdio.h>#include <conio.h>

main()

{

    unsigned int angka,x,y;

    angka=50;

    x=angka << 2;

    y=angka >> 2;

    clrscr();

    printf(“Angka        : %5u : %xh\n”,angka,angka);

    printf(“x=angka << 2 : %5u : %xh\n”,x,x);

    printf(“y=angka >> 2 : %5u : %xh\n”,y,y);

    getch();

    return 0;

}

Jika di-Run akan menghasilkan :

Angka        :    50 : 32hx=angka << 2 :   200 : c8h

x=angka >> 2 :    12 : ch

Pembuktian :

Angka    :  50 : 00000000 00110010x=angka << 2   : 00000000 11001000  = 128 + 64 + 8 = 200 : c8h 

x=angka >> 2   : 00000000 00001100  = 8 + 4        =  12 : ch

Aturan-Aturan Perhitungan

Perhatikan perintah berikut :

float a;a= 9/5;

Jika anda mengharapkan bahwa nilai yang didapat adalah 1.8, maka anda akan kecewa, karena angka yang didapat adalah 1. Kenapa ini terjadi?.

Ada aturan-aturan pengkonversian data yang berlaku dalam suatu operasi perhitungan, diantaranya :

1.    Jika suatu bilangan bulat dioperasikan dengan bilangan bulat, maka nilai yang didapat adalah bilangan bulat pula.

2.    Operasi perhitungan dilakukan berdasarkan tipe bilangan yang terbesarnya. Jadi jika ada suatu perhitungan antara int dengan long, maka komputer akan memperlakukan int sebagai long.

Untuk mengkonversi suatu variabel  menjadi suatu variabel yang berbeda tipe, maka bisa dilakukan dengan type cast. Caranya adalah dengan menulis tipe data yang diinginkan diapit dengan tanda kurung. Contoh :

float a,b;a=(float)9/5;

b=(float)(9/5);

Pada perintah a=(float) 9/5, maka angka 9 akan dikonversikan menjadi float sehingga perintah tersebut akan menghasilkan nilai 1.8, tetapi jika perintah b=(float)(9/5) dikerjakan maka akan menghasilkan nilai 1.0 karena yang dikerjakan duluan adalah 9/5 yang menghasilkan nilai 1 yang kemudian dikonversikan ke dalam bentuk float.

Konversi tipe data juga terjadi dalam operasi penugasan / pengisian data terhadap variabel. Perhatikan perintah berikut :

#include <stdio.h>#include <conio.h>

main()

{

    char c;

    int i;

    float f;

    f=65.9;

    i=f;

    c=i;

    printf(“F  : %f\n”,f);

    printf(“I  : %d\n”,i);

    printf(“C  : %c\n”,c);

    getch();

    return 0;

}

Jika dieksekusi, akan menghasilkan :

F  : 65.900002I  : 65

C  : A

Keterangan :

–      f=65.9; pengisian nilai 65.9 ke variabel f

–      i=f; pengisian nilai f ke variabel i. Dalam baris ini terjadi konversi dari float ke int. Pengkonversian float ke int selalu menghilangan angka pecahannya, dan tidak terjadi pembulatan.

–      c=i; pengisian nilai i ke variabel c. Dalam baris ini terjadi konversi dari int ke char.

Mendefinisikan Konstanta Simbolis

Untuk mendefinisikan suatu konstanta, perintah yang bisa dipakai adalah perintah $define diikuti dengan nama konstanta dan isinya.

Contoh :

#include <stdio.h>#include <conio.h>

 

#define PI 3.14

#define pembuat “Wahyu Setiawan”

main()

{

    float radius=10,keliling,luas;

    keliling=2*PI*radius;

    luas=PI*radius*radius;

    printf(“Perhitungan Lingkaran\nDibuat Oleh : %s\n”,pembuat);

    printf(“======================\n”);

    printf(“Radius   : %6.2f\n”,radius);

    printf(“Keliling : %6.2f\n”,keliling);

    printf(“Luas     : %6.2f\n”,luas);

    getch();

    return 0;

}

Jika dieksekusi, akan menghasilkan :

Perhitungan LingkaranDibuat Oleh : Anak yang suka Mencoba

======================

Radius   :  10.00

Keliling :  62.80

Luas     : 314.00

Tuliskan Komentar

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s