Pages

Jumat, 13 Juni 2014

operator bahasa c

OPERATOR

1          PENDAHULUAN

Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai dan sebagainya.
tabel 1 Macam-macam Operator, Arah Proses, dan Jenjangnya
Kategori
Operator
Arah Proses
Jenjang
Kurung, indeks, larik, dan elemen
( )  [ ] ->
Kiri-kanan
1
Operator unary
! ~ ++ — & * (tipe) sizeof
Kanan-kiri
2
Operator aritmatika perkalian, pembagian, dan sisa pembagian
? * %
Kiri-kanan
3
Operator aritmatika pertambahan, dan pengurangan
+ -
Kiri-kanan
4
Operator bitwise pergeseran bit
<< >>
Kiri-kanan
5
Operator hubungan
< <= > >=
Kiri-kanan
6
Operator hubungan dan kesamaan dan ketidak-samaan
== !=
Kiri-kanan
7
Operato bitwise AND
&
Kiri-kanan
8
Operator bitwise XOR
^
Kiri-kanan
9
Operator bitwise OR
|
Kiri-kanan
10
Operator kondisi AND
&&
Kiri-kanan
11
Operator kondisi OR
| |
Kiri-kanan
12
Operator Ternary
? ;
Kanan-kiri
13
Operator pengerjaan aritmatika
= += -= *= /= %=
Kanan-kiri
14
Operator pengerjaan bitwise
&= ^= |= <<= >>=
Kanan-kiri
15
Operator koma
,
Kiri-kanan
16

Tabel 1 menunjukkan macam-macam operator yang disediakan oleh bahasa C. Di tabel ini, arah dari proses menunjukkan bagaimana hubungan antara operand-operand di operator akan diproses, mulai dari yang sebelah kiri operatornya kearah kanan atau sebaliknya. Misalnya ungkapan A/B, maka yang akan di bagi oleh B adalah A, berarti operator ‘/’ mempunyai arah proses dari kiri-kanan.
Jenjang menunjukkan operator mana yang akan dikerjakan terlebih dahulu jika dalam suatu ungkapan melibatkan lebih dari satu macam operator. Jenjang dengan nomor 1 adalah jenjang yang tertinggi. Misalnya ungkapan X=B+A, melibatkan dua operator; operator aritmatika ‘+’ mempunyai jenjang yang lebih tinggi dibandingkan dengan operator pengerjaan ‘=’, sehingga ungkapan B+A akan dikerjakan terlebih dahulu dan kemudian hasilnya akan diberikan ke variabel X.

2          JENIS-JENIS OPERATOR

Bahasa C menyediakan jenis-jenis operator misalnya operator aritmatika, operator pengerjaan, operator hubungan, operator logika, operator bitwise, dan operator koma.

2.1         OPERATOR ARITMATIKA (ARITHMETIC OPERATOR)

Bahasa C menyediakan sejumlah operator aritmatika (arithmetic operator) seperti tampak pada table 2.
tabel 2 Operator Aritmatika
Operator
Jenjang
Fungsi
*
3 Perkalian
/
3 Pembagian
+
4 Penjumlahan
-
4 Pengurangan
%
3 Pembagian modulo (Sisa pembagian)
Jenjang menunjukan operator mana yang akan diprosses terlebih dahulu. Misalnya operator bagi “/” (jenjang 3) akan diproses terlebih dahulu dibandingkan dengan operator penjumlahan “+” (jenjang 4). Untuk jenjang yang sama , operator yang akan diproses terlebih dahulu adalah yang berada diposisi lebih kiri. Misalnya ungkapan sebagai berikut :
A+B/C+D mempunyai arti  A +  +D
Agar ungkapan yang dimaksud tidak salah, maka dapat digunakan tanda kurung “( )” . Karena operator “( )” adalah operator dengan jenjang tertinggi (jenjang 1) maka penggunaannya sebagai  berikut :
(A+B)/(C+D) yang mempunyai arti
Operator modulus ‘%’ hanya digunakan untuk nilai-nilai integer saja dan tidak dapat digunakan untuk operasi nilai pecahan (tipe float,double atau long double). Operator ini akan menghasilkansisa dari pembagian (remainder) dari dua buah nilai integer.
Contoh:
#include <stdio.h>
main()
{
int X, Y, Z;
X =9;
Y =4;
Z = X%Y;
printf(“Nilai Z = %d\n”,Z);
}
Jika program ini dijalankan, akan didapatkan hasil:
Nilai Z = 1

2.2         OPERATOR UNARY

Operator Unary merupakan operator Yang hanya menggunakan operand saja (dibandingkan dengan operator-operator lainnya yang menggunakan dua buah operand). Adapun operasi yang tergolong unary yaitu :
tabel 3 Operator Unary
Operator
Jenjang Fungsi
-
4 Unary minus
++
2 Increase dengan penambahan nilai 1
2 Decrease dengan pengurangan nilai 1
(tipe)
2 Cast
Sizeof
2 Ukuran operand dalam byte
!
2 Unary NOT
~
2 Komplemen 1 (bitwise NOT)
&
2 Menghasilkan alamat memori operand (operator pointer)
*
2 Menghasilkan nilai pengenal dialamatnya (operator pointer)

2.2.1          Operator Unary Minus

Operator Minus “-“ digunakan untuk memberi nilai minus suatu nilai numerik (bukan untuk pengurangan). Misalnya ungkapan A+-B/C akan diartikan sebagai A+ .

2.2.2          Operator Unary ++ dan –

Operator Unary  ‘++’ dan operator unary ‘- -‘ merupakan operator khusus yang ada pada bahasa C dan jarang dijumpai di Bahasa yang lain. Operator ‘++’ akan menambah nilai numerik 1  ke pengenal yang menggunakannya dan operator ‘- – ‘ akan mengurangi dengan nilai numerik 1 untuk pengenal yang menggunakannya. Misalnya bentuk X=X+1 dapat dituliskan sebagai X++. Sedangkan bentuk X=X-1 dapat dituliskan sebagai X–. Operator ini banyak dijumpai di statement for yang berbentuk sebagai berikut
For(I=1; I<10;I=I+1)
Dapat ditulis dengan operator ‘++’ sebagai berikut
For(I=1;I<10;I++)

2.2.3          Operator Unary (tipe)

Operator Unary (tipe) merupakan operator yang memaksa suatu ungkapan yang mempunyai tipe yang diinginkan (disebut juga dengan cast). Tipe yang diinginkan ditulis di dalam tanda kurung didepan ungkapannya. Misalnya variable X dan Y adalah bertipe int dan Z bertipe float, maka untuk membuat hasil pembagian X/Y menjadi tipe float, dapat dituliskan Z = (float) X/Y;
Contoh :
#include <stdio.h>
main()
{
int X,Y;
float Z;
X=7;
Y=3;
Z=(float)X/Y;
printf(“Nilai Z=%f”, Z);
}
Jika program ini dijalankan akan didapatkan hasil :
Nilai Z=2.333333

2.2.4          Operator Unary sizeof

Operator Unary sizeof digunakan untuk mengetahui ukuran memori dari operandnya dari satuan byte. Operator ini biasa digunakan untuk maksud portabilitas dari suatu mesin komputer dari komputer lainya.
Contoh :
#include <stdio.h>
main()
{
char C;
int I;
long int LI;
float F;
double D;
long double LD;
printf (“ukuran karakter = %d byte \n”, sizeof C);
printf (“ukuran integer= %d byte\n”, sizeof I);
printf(“ukuran long integer= %d byte \n”,sizeof LI);
printf (“ukuran float= %d byte \n”,sizeof F);
printf (“ukuran double= %d byte \n”,sizeof D);
printf (“ukuran long double= %d byte \n”,sizeof LD);
}
Jika program ini dijalankan maka akan didapatkan hasil:
ukuran karakter= 1 byte
ukuran integer= 2 byte
ukuran long integer= 4 byte
ukuran float= 4 byte
ukuran double= 8 byte
ukuuran long double= 10 byte

2.3         OPERATOR PENGERJAAN (ASSIGMENT OPERATOR)

Operator pengerjaan digunakan untuk memindahkan nilai dari suatu ungkapan ke suatu pengenal. Operator pengerjaan yang umum digunakan dalam bahasa pemrograman, termasuk bahasa C adalah operator sama dengan  (.
Contoh :
Maka “=” adalah operator pengerjaan yang akan memberikan nilai dari ungkapan  kepada variabel .
tabel 4 Operator Pengerjaan Aritmatika
Operator
Jenjang
Contoh
Ekuivalen dengan
14 Mengerjakan  ke
14
14
14
14
%=
14
Contoh :
Misalnya variabel I dan J adalah variable-variabel tipe interger dengan nilai awal keduanya adalah 10. Statement-statement berikut ini menggunakan variable-variabel I dan J dan hasil  ungkapannya.
tabel 5 Contoh Operator Pengerjaan
Statement
Ekuivalen dengan
Hasil ungkapan
I += 3;
I = I + 3;
I = 10+3 = 13
I -= 2;
I = I – 2;
I = 10-2 = 8
I *= J/2;
I = I*(J/2);
I=10* (10/2)=50
I /= J-8;
I = I/(J-8);
I= 10/ (10-8)= 5

2.4         OPERATOR HUBUNGAN (RELATIONAL OPERATOR)

Operator hubungan digunakan untuk menunjukkan hubungan antara dua buah operand. Operator ini banyak digunakan untuk penyeleksian kondisi dengan statement if, do-while atau while.
tabel 6 Operator Hubungan
Operator
Jenjang Fungsi
<
6
Lebih kecil dari
<=
6
Lebih kecil atau sama dengan
>
6
Lebih besar dari
>=
6
Lebih besar atau sama dengan
==
7
Sama dengan
!=
7
Tidak sama dengan
Contoh 1:
Nilai A adalah 5, nilai B adalah 7, dan nilai C adalah “a”. Beberapa ungkapan hubungan yang menggunakan variable-variebel ini dan hasilnya tampak sebagai berikut.
tabel 7 Contoh Operator Hubungan
Ungkapan Hubungan
Hasil
Nilai
A == 5
Benar
1
A == B
Salah
0
B < 7
Salah
0
A <= 7
Benar
1
(A+B) != 35
Benar
1
C != ‘A’
Benar
1
C <= ‘Z’
Benar
1
Contoh 2:
#include <stdio.h>
main()
{
int A=5,B=7;
printf(“%d < %d hasilnya adalah %d \n”, A,B,A<B);
printf(“%d<=%d hasilnya adalah %d \n”, A,B,A<=B);
printf(“%d>%d hasilnya adalah %d \n”,A,B,A>B);
printf(“%d>=%d hasilnya adalah %d \n”,A,B,A>=B);
printf(“%d==%d hasilnya adalah %d \n”,A,B,A==B);
printf(“%d !=%d hasilnya adalah %d \n”,A,B,A!=B);
}
Jika program ini dijalankan akan didapatkan hasil :
5 <   7 hasilnya adalah 1
5 <= 7 hasilnya adalah 1
5 >    7 hasilnya adalah 0
5 >= 7 hasilnya adalah 0
5 == 7 hasilnya adalah 0
5 != 7 hasilnya adalah 1
Operator hubungan banyak digunakan untuk penyeleksian kondisi dengan statement if, do-while

2.5         OPERATOR LOGIKA (LOGICAL OPERATOR)

Operator logika digunakan untuk membandingkan hasil dari operator-operator hubungan. Operator Logika membandingkan dua buah nilai logika. Nilai logika adalah nilai benar atau salah.
tabel 8 Operator Logika
Operator
Jenjang
Fungsi
&&
11
Logika DAN (AND)
12
Logika ATAU (OR)
Misalnya nilai A adalah 5, B adalah 7, dan C adalah ‘ a’, maka ungkapan logika berikut ini akan mempunyai hasil akhir benar.
A<B            ||           B== 7                     &&         C>’z’      1
1              ||                1                        &&           0             2
1                                  0                         3
Hasil akhir benar dari ungkapan logika tersebut didapat dari langkah-langkah sebagai berikut ini.
1)      Jenjang operator hubungan lebih tinggi dibandingkan dengan jenjang operator logika, sehingga  ungkapan-ungkapan hubungan dikerjakan terlebih dahulu. Ungkapan hubungan A < B adalah benar, maka akan bernilai 1. Ungkapan hubungan B == 7 adalah benar dan bernilai 1. Ungkapan hubungan C > ‘ z ‘ adalah salah maka bernilai 0.
2)      Operator logika ‘ && ‘ mempunyai jenjang yang lebih tinggi dibandingkan dengan operator logika ‘ || ‘ , sehingga ungkapan logika 1 && 0 dikerjakan terlebih dahulu dengan hasil logikanya adalah 0.
3)      Ungkapan logika 1 || 0 selanjutnya dikerjakan dengan memberikan hasil akhir bernilai logika benar atau 1.
Contoh :
Nilai A adalah 5, Nilai B adalah 7, dan nilai C adalah ‘ a’. Beberapa logika yang menggunakan variabel-variabel ini dan hasilnya tampak seperti berikut ini.
Operator logika juga banyak digunakan untuk penyeleksian kondisi yang rumit dengan statemen if , do-while atau while.

2.6         OPERATOR KOMA (COMMA OPERATOR)

Operator koma digunakan untuk menggabungkan beberapa ungkapan dengan proses yang berurutan dari ungkapan sebelah kiri koma ke ungkapan sebelah kanan koma. Misalnya Statement berikut ini
X= ( B= 5, B*2);
Akan dihasilkan nilai X adalah 10, karena B= 5 akan diproses terlebih dahulu dan kemudian nilai B di kalikan dengan nilai 2. Hasil akhir ini yaitu nilai 10 diberikan ke variabel X. Nilai B terakhir adalah 5, sedangkan operasi B*2 tidak merubah nilai B karena operasi ini hasilnya tidak disimpan di variabel B.
Contoh:
Misalnya nilai A adalah 5 dan B adalah 7 beberapa ungkapan yang menggunkan operator koma dan variabel- variabel ini serta hasilnya tampak sebagai berikut ini.
tabel 9 Operator Koma
Ungkapan
Hasil Akhir
A
B
X
X = (B=5, B*2)
X = ( B=B+5, B*2)
X = (B=B+5, B=B*2)
X= (A=B, B*2)
X=(A=B+5, B*2)
X=(A= B+5, A*2)
X= (A=3, A=A+5, B=2)
X=(A=3, A+5, B=A*2)
X=(A,B,3)
5
5
5
7
12
12
8
3
5
5
12
24
7
7
7
16
7
7
10
24
24
14
14
24
16
6
3

2.7         OPERATOR BITWISE

Operator bitwise digunakan untuk  memanipulasi bit-bit nilai data yang ada di memori. Operator-operator ini hanya dapat digunakan untuk tipe data char, int dan long int.
tabel 10 Operator Bitwise
Operator
Jenjang Fungsi
<<
5
Pergeseran bit ke kiri
>>
5
Pegeseran bit ke kanan
&
8
Bitwise AND
^
9
Bitwise XOR (Exclusive OR)
10
Bitwise OR
~
-
Bitwise NOT

2.7.1          OPERATOR BITWISE KOMPLEMEN SATU

Operator Bitwise komplemen satu (One’s Complement Operator) kadang-kadang disebut juga dngan istilah komplementation operator. Operator ini menggunakan symbol ‘~’ dan merupakan operator Unary yang mempunyai arti bitwise NOT, yaitu membalik nilai-nilai bit 1 menjadi nilai- nilai bit 0 atau sebaliknya. Misalnya nilai binary 11011001 maka nilai komplemen satunya adalah nilai binary 00100110.

2.7.2          OPERATOR BITWISE LOGIKA

Tiga buah operator bitwise logika dapat digunakan, yaitu operator bitwise AND (‘&’), Operator bitwise OR(‘ |’) dan operator bitwise XOR (‘^’).
Operator-operator ini menggunakan dua buah operand. Hubungan bit-bit untuk operator-operator ini dan hasilnya tampak pada tabel berikut
Tabel hubungan Bit dan Hasilnya untuk Operasi Bitwise Logika.
tabel 11 Operator Bitwise Logika
Bit
AND
b1 & b2
OR
b1 |b2
XOR
b1 ^ b2
b1
b2
1
1
0
0
1
0
1
0
1
0
0
0
1
1
1
0
0
1
1
0
Contoh:
#include <stdio.h>
main()
{
int X=0x2d;   /*bernilai 45 dalam decimal */
int Y=0x1b;   /* bernilai 27 dalam decimal */
printf(“%x & %x hasilnya adalah %x (dalam heksadesimal)\n”,X,Y,X&Y);
printf(“%x | %x hasilnya adalah %x (dalam heksadesimal)\n”, X,Y, X|Y);
printf(“%x^ %x hasilnya adalah %x (dalam heksadesimal)\n”,X,Y,X^Y);
}
Jika program ini dijalankan akan didapatkan hasil:
2d & 1b hasilnya adalah 9 (dalam heksadesimal)
2d | 1b hasilnya adalah 3f(dalam heksadesimal)
2d | 1b hasilnya adalah 36 (dalam heksadesimal)
Operator bitwise ‘&’ (AND) banyak digunakan untuk mengecek status dari suatu bit, apakah bernilai bit 1 atau bernilai bit 0. Misalnya variabel A adalah tipe char berukuran 1 byte (8 bit) dan bernilai desimal 125 atau bernilai 0111 1101 dalam binari. Untuk mengetahui apakah bit paling ujung kiri bernilai 0 ataukah 1, maka dapat dilakukan dengan operasi bitwise AND sebagai berikut:
0111 1101
&             1000 0000
—————–
0000 0000
Hasil dari operasi bit ini adalah nilai 0, berarti bit yang diperiksa bernilai 0. Operasi bit ini jika ditulis dalam bentuk nilai desimal akan berbentuk A & 128. Nilai binari 1000 0000 adalah nilai desimal 128. Untuk mengecek bit ke dua dari ujung paling kiri dapat dilakukan:
0111 1101
&              0100 0000
————-
0100 0000
Operasi bit ini dapat dituliskan dalam bentuk desimal A & 64. Nilai binary 0100 0000 dalam desimal adalah nilai 64. Hasil dari operasi ini adalah nilai desimal 64. Jika hasil untuk yang diperiksa tidak sama dengan 0 berarti bit tersebut adalah bernilai 1. Untuk bit ke tiga dari ujung  untuk  variabel A dapat diperiksa dengan  operasi A & 32 dan seterusnya. Untuk nilai 1 byte (8 bit) yang diperiksa, penyeleksian operasi bit dengan operator ‘&’ dimulai dengan 128. Nilai 128 ini adalah 2^7. Untuk nilai 2 byte (16 bit), maka  penyeleksian operasi bit dengan operator ‘&’ dimulai dengan nilai 2^15=32768. Nilai 128,32768 dan seterusnya ini berarti tergantung dari ukuran tipe datanya dan dapat dirumuskan sebesar 2 pangkat (sizeof(tipe datanya )*8-1).
Contoh:
#include <stdio.h>
#include <stdio.h>
main()
{
long int D;
unsigned long int Mulai, B;
clrscr()
printf(“ Masukan nilai integer  ? “);
scanf (“%ld”, &D);
printf(“\n”);
printf(“Nilai Binarinya =”);
Mulai = pow (2, sizeof(D)*8-1);
for (B=Mulai; B>0; B=B/2)
if ((D&B)==B) printf(“1”);
else printf(“0”);
printf(“\n”);
printf(“Nilai Heksadesimalnya = %lx\n”,D);
}
Jika program ini dijalankan akan didapatkan hasil:
Masukkan nilai integer ? 15000
Nilai Binarinya                  =00000000000000000011101010011000
Nilai Heksadesimalnya   =3a98

2.7.3          OPERATOR PERGESERAN BIT

Dua buah operator yang dapat digunakan untuk pergeseran bit adalah shift left (‘<<’) dan shift right(‘>>’). Operator-operator ini membutuhkan dua buah operand. Operand pertama adalah nilai integer yang nilai bit-bitnya akan digeser dan operand kedua menunjukkan banyaknya pergeseran. Misalnya ungkapan 125<<2 akan dihasilkan nilai 500 (0x1f4 dalam heksadesimal) sebagai berikut:
Nilai 125                    = 0000 0000 0111 1101
Digeser 2 bit ke kiri = 0000 0001 1111 0100
Sedangkan ungkapan 125>>2 akan dihasilkan nilai 31 (0x1f dalam heksadesimal) sebagai berikut:
Nilai 125                         = 0000 0000 0111 1101
Digeser 2 bit ke kanan = 0000 0000 0001 1111

2.7.4          OPERATOR BITWISE PENGERJAAN

Bahasa C juga menyediakan operator-operator pengerjaan untuk bitwise. Operator-operator ini adalah ‘&=’, ‘^=’, ‘|=’, ‘<<=’ dan ‘>>=’.
Contoh:
Misalkan A adalah variabel tipe integer dengan nilai decimal 125 (0x7d dalam heksadesimal). Beberapa ungkapan pengerjaan bitwise berikut ini menggunakan variabel A dan hasil akhirnya tampak sebagai berikut ini.
tabel 12 Operator Bitwise Pengerjaan

Ungkapan
Ekuivalen dengan
Hasil
A &=0x1b
A ^=0x1b
A |=0x1b
A <<=2
A >>=2
A =A & 0x1b
A =A ^ 0x1b
A =A | 0x1b
A =A <<2
A =A >>2
0×19 (25 dalam nilai desimal)
0×66 (102 dalam nilai desimal)
0x7f (127 dalalmm nilai desimal)
0x1f (500 dalam nilai desimal)
0x1f (31 dalam nilai desimal)

0 komentar:

Posting Komentar