Belajar Pemrograman C #6: Mengenal Operator pada C

Apa itu Operator?

Operator adalah sebuah simbol…

Simbol yang digunakan untuk melakukan operasi tertentu.

Misalnya:

Kita ingin menjumlahkan nilai dari variabel x dan y, maka kita bisa menggunakan operator penjumlahan (+).

x + y

Ada enam jenis kelompok operator dalam pemrograman C:

  1. Operator Artimatika;
  2. Operator Penugasan;
  3. Operator Pembanding;
  4. Operator Logika;
  5. Operator Bitwise;
  6. dan Operator Lain-lain.

Apa saja perbedaan dari semua jenis operator ini?

Mari kita bahas, satu per satu…

1. Operator Aritmatika

Operator aritmatika merupakan operator yang digunakan untuk melakukan operasi aritmatika.

Operator ini terdiri dari:

Nama OperatorSimbol
Penjumlahan+
Pengurangan-
Perkalian*
Pembagian/
Sisa Bagi%

Bagaimana cara pakainya?

Mari kita coba dalam contoh program:

Buatlah program baru bernama operator_aritmatika.c, kemudian isi dengan kode berikut.

#include <stdio.h>

void main(){

    int a, b, c;

    printf("Inputkan nilai a: ");
    scanf("%i", &a);

    printf("Inputkan nilai b: ");
    scanf("%i", &b);

    c = a + b;

    printf("Hasil a + b: %i", c);

}

Maka hasilnya:

Output program operator

Coba juga untuk contoh operator yang lain seperti pengurangan, perkalian, pembagian, dan sisa bagi.

#include <stdio.h>

void main(){

    int a, b;

    printf("Inputkan nilai a: ");
    scanf("%i", &a);

    printf("Inputkan nilai b: ");
    scanf("%i", &b);

    printf("Hasil a + b: %i\n", a + b);
    printf("Hasil a - b: %i\n", a - b);
    printf("Hasil a * b: %i\n", a * b);
    printf("Hasil a / b: %i\n", a / b);
    printf("Hasil a % b: %i\n", a % b);

}

Maka hasilnya:

Output program operator

Pada operasi pembagian, 7/3 hasilnya adalah 3.

Mengapa demikian?

Bukannya seharusnya 2.333

Ini karena kita melakukan operasi terhadap tipe data integer.

Bila kita ubah programnya menggunakan tipe data float:

#include <stdio.h>

void main(){

    float a, b;

    printf("Inputkan nilai a: ");
    scanf("%i", &a);

    printf("Inputkan nilai b: ");
    scanf("%i", &b);

    printf("Hasil a / b: %f\n", a / b);

}

Maka hasilnya akan seperti ini:

Program pembagian dengan tipe data float

2. Operator Penugasan

Operator penugasan (Assignment Operator) merupakan operator untuk meberikan tugas pada variabel. Biasanya untuk mengisi nilai.

Operator Penugasan terdiri dari:

Nama OperatorSombol
Pengisian Nilai=
Pengisian dan Penambahan+=
Pengisian dan Pengurangan-=
Pengisian dan Perkalian*=
Pengisian dan Pembagian/=
Pengisian dan Sisa bagi%=
Pengisian dan shift left<<=
Pengisian dan shift right>>=
Pengisian dan bitwise AND&=
Pengisian dan bitwise OR|=
Pengisian dan bitwise XOR^=

Mari kita coba dalam program…

Buatlah program baru bernama operator_penugasan.c, kemudian isi dengan kode berikut:

#include <stdio.h>

void main(){
    int a, b;

    // pengisian nilai dengan operator =
    a = 5;
    b = 10;

    // pengisian sekaligus penambahan
    b += a; // ini sama seperti b = b + a
    printf("Hasil b += a adalah %d\n", b);

    // pengisian sekaligus pengurangan
    b -= a; // ini sama seperti b = b - a
    printf("Hasil b -= a adalah %d\n", b);

    // pengisian sekaligus perkalian
    b *= a; // ini sama seperti b = b * a
    printf("Hasil b *= a adalah %d\n", b);

    // pengisian sekaligus pembagian
    b /= a; // ini sama seperti b = b / a
    printf("Hasil b /= a adalah %d\n", b);

    // pengisian sekaligus sisa bagi
    b %= a; // ini sama seperti b = b % a
    printf("Hasil b %= a adalah %d\n", b);
}

Hasilnya:

Program dengan operator penugasan

Pada program tersebut, variabel b kita isi ulang dengan operator penugasan.

Sebagai contoh, operasi:

b += a

Sama seperti operasi:

b = b + a

Artinya kita akan mengisi nilai untuk b dengan nilai b ditambah nilai a.

3. Operator Pembanding

Operator pembanding adalah operator untuk memabndingkan dua buah nilai. Operator ini juga dikenal dengan operator relasi.

Operator pembanding terdiri dari:

Nama OperatorSimbol
Lebih Besar>
Lebih Kecil<
Sama Dengan==
Tidak Sama dengan!=
Lebih Besar Sama dengan>=
Lebih Kecil Sama dengan<=

Nilai yang dihasilkan dari operasi pembanding akan berupa true dan false.

Pada bahasa C, nilai true akan samadengan 1 dan false akan samadengan 0.

Mari kita coba dalam program…

Buatlah program baru dengan nama operator_pembanding.c, kemudian isi dengan kode berikut:

#include <stdio.h>

void main(){
    int a = 4;
    int b = 3;

    printf("a = %d\n", a);
    printf("b = %d\n", b);
    // operator pembanding
    printf("a > b = %d\n", a > b);
    printf("a < b = %d\n", a < b);
    printf("a >= b = %d\n", a >= b);
    printf("a <= b = %d\n", a <= b);
    printf("a == b = %d\n", a == b);
    printf("a != b = %d\n", a != b);
}

Maka hasilnya:

Program dengan operator pembanding

4. Operator Logika

Kalau kamu pernah belajar logika matematika, pasti tidak akan asing dengan operator ini.

Nama OperatorSimbol di Java
Logika AND&&
Logika OR||
Negasi/kebalikan!

Operator Logika digunakan untuk membuat operasi logika.

Misalnya seperti ini:

  • Pernyataan 1: Petani Kode seorang programmer
  • Pernyattan 2: Petanikode menggunakan Linux

Jika ditanya, apakah Petani Kode programmer yang menggunakan Linux?

Tentu kita akan cek dulu kebenarannya

  • Pernyataan 1: Petani Kode seorang programmer = true.
  • Pernyattan 2: Petanikode menggunakan Linux = true.

Apa petanikode programmer dan menggunakan Linux?

Pertnyataan 1 && Pernyataan 2 = true

Bingung?

Coba cek lagi tabel kebenaran untuk logika AND.

Pernyatan 1Pernytaan 2Logika AND
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

Masih bingung…?

Sepertinya kamu harus buka lagi pelajarann logika matematika 😄.

Lalu bagaimana pengunaanya di program?

Mari kita lihat contohnya…

Buatlah program baru bernama operator_logika.c, kemudia ini dengan kode berikut.

#include <stdio.h>

void main(){
    int a = 1; // true
    int b = 0; // false

    printf("a = %d\n", a);
    printf("b = %d\n", b);

    // logika AND
    printf("a && b = %d\n", a && b);

    // logika OR
    printf("a || b = %d\n", a || b);

    // logika NOT
    printf("!a = %d\n", !a);
}

Hasilnya:

Program dengan operator logika

5. Operator Bitwise

Operator bitwise merupkan operator yang digunakan untuk operasi berdasarkan bit (biner) dari sebuah nilai.

Operator bitwise terdiri dari:

Nama OperatorSimbol di Java
AND&
OR|
XOR^
NOT/komplemen~
Left Shift<<
Right Shift>>

Buat kamu yang sudah pernah belajar sistem bilangan dan sistem digital akan mudah memahami cara kerja operator ini.

Tapi buat kamu yang belum…

Saya akan coba menjelaskan dengan cara yang mudah.

Baiklah!

Misalkan kita punya nilai 6 dan 3.

Nilai 6 dan 3 kemudian kita ubah ke dalam bentuk bilangan biner.

Sehiga akan menjadi seperti ini:

6 = 0110
3 = 0011

Nah, operator bitwise akan melakukan operasi berdasarkan biner-biner tersebut.

Mari kita lihat contoh yang pertama:

Bitwise AND (&)

Bitwise AND merupakan operasi bit berdasarkan logika AND, perhatikan gambar ini.

Operator bitwise and

Perhatikan bilangan biner untuk nilai 6 dan 3.

Apbila kita melakukan operasi AND di sana, maka akan menghasilkan bilangan biner baru.

Kemudian biner yang dihasilkan tersebut diubah kembali ke dalam bilangan desimal.

Maka hasilnya adalah 2.

Mari kita coba dalam program.

Buatlah program beru bernama bitwise_and.c, kemudian isi dengan kode berikut:

#include <stdio.h>

void main(){
    int a = 6;
    int b = 3;

    printf("a & b = %d\n", a & b);
}

Maka hasilnya:

Program dengan operator bitwise or

Bitwise OR (|)

Operator bitwise OR juga sama seperti bitwise AND.

Operator bitwise OR akan menghasilkan nilai false atau 0 saat keduanya false.

Operator bitwise or

Contoh Program: bitwise_or.c

#include <stdio.h>

void main(){
    int a = 6;
    int b = 3;

    printf("a | b = %d\n", a | b);
}

Hasil outputnya:

a & b = 7

Bitwise XOR (^)

Operator XOR (Exclusive OR) akan menghasilkan nilai 1 saat kedua nilai tidak sama.

Operator bitwise xor

Contoh Program: bitwise_xor.c

#include <stdio.h>

void main(){
    int a = 6;
    int b = 3;

    printf("a & b = %d\n", a ^ b);
}

Hasil outputnya:

a & b = 5

Bitwise NOT (~)

Bitwise NOT dikenal juga dengan komplemen.

Operator ini akan menghasilkan nilai biner yang terbalik dari biner aslinya.

Kemudian direpresentasikan dengan komplemen dua.

Operator bitwise not

Contoh program: bitwise_not.c

#include <stdio.h>

void main(){
    int a = 6;

    printf("~a = %d\n", ~a);
}

Hasil outputnya:

~a = -7

Bitwise Left Shift (<<)

Operator bitwise left shift akan menghasilkan nilai biner yang digeser ke kiri.

Contoh:

6 << 1

Maka niai biner dari 6 akan digeser sebanyak 1 bit ke arah kiri.

Operator bitwise left shift

Contoh program: left_shift.c

#include <stdio.h>

void main(){
    int a = 6;

    printf("a << 1 = %d\n", a << 1);
}

Hasilnya:

a << 1 = 12

Bitwise Right Shift (>>)

Bitwise right shift sama seperti left shift. Perbedaanya terletak pada arahnya.

Right shift akan menggeser bit ke arah kanan.

Contoh:

6 >> 1

Maka nilai biner dari 6 akan digeser ke arah kanan sebanyak 1 bit.

Operator bitwise right shift

Contoh program: right_shift.c

#include <stdio.h>

void main(){
    int a = 6;

    printf("a >> 1 = %d\n", a >> 1);
}

Hasilnya:

a >> 1 = 3

6. Operator Lain-lain

Selain dari operator yang kita bahas di atas, terdapat beberapa operator lain yang harus diketahui:

Nama OperatorSimbolKeterangan
Alamat memori&untuk mengambil alamat memori
Pointer*untuk membuat pointer
Ternary? :untuk membuat kondisi
Increment++untuk menambah 1
Decrement--untuk mengurangi 1

Operator & jika digunakan pada satu variabel, akan berfungsi untuk mengambil alamat memori dari variabel tersebut.

Dan operator * kan berfungsi untuk membut sebuah pointer.

Contoh:

#include <stdio.h>

void main(){
    // membuat pointer
    int *a = 5;

    // ambil alamat memori dari pointer a
    printf("alama memori variabel a adalah %x\n", &a);
}

Hasilnya:

Program dengan operator pointer

Berikutny ada operator ternary untuk membuat kondisi. Cara kerjanya seperti percabangan if/else.

Operator ternary di Java

Contoh:

#include <stdio.h>

void main(){
    int a = 4;

    printf("a > 1 adalah %s", a > 1 ? "benar": "salah");
}

Hasil outputnya:

a > 1 adalah benar

Terakhir ada operator increment dan decrement untuk menambah dan mengurangi nilai dengan 1.

Contoh:

#include <stdio.h>

void main(){
    int a = 4;

    // increment a
    a++;

    printf("a++ = %d\n", a);

    // increment a
    ++a;

    printf("++a = %d\n", a);

    // decrement a
    a--;

    printf("a-- = %d\n", a);

    // decrement a
    --a;

    printf("--a = %d\n", a);
}

Hasil outputnya:

a++ = 5
++a = 6
a-- = 5
--a = 4

Operator increment dan decremen dapat ditaruh di depan maupun di belakang variabel atau nilai.

Operator ini biasanya digunakan pada blok perulangan.

Apa Selanjutnya?

Kita sudah belajar seuma jenis operator pada bahasa pemrograman C…

Operator-operator ini akan sering kita pakai dalam membuat program.

Karena itu, pastikan kamu memahaminya. Jika belum paham, bisa ditanyakan melalui komentar.

Berikutnya silahkan pelajari tentang: