Home / Pemrograman / C / Kesalahan Programmer Pemula Yang Belum Banyak Diketahui

Kesalahan Programmer Pemula Yang Belum Banyak Diketahui

Inilah Kesalahan Programmer Pemula

Kali ini saya akan sedikit share tentang materi kuliah saya yang membahas tentang tipe data pada bahasa pemrograman C. Seperti kita tahu di pemrograman C terdapat beberapa jenis tipe data yaitu int, unsigned int, char, unsigned char, float, dan double. Namun kali ini kita tidak akan membahas semua tipe data yang kita sebutkan tadi. Namun kita akan sedikit membahas tipe data integer dan unsigned int dan sedikit mengoreksi kesalahan kita dalam menuliskan sintak program.

Seperti yang kita ketahui tipe data integer dapat digunakan untuk menampung bilangan bulat antara –2.147.483.648 sampai 2.147.483.647. Sedangkan tipe data unsigned integer dapat menampung data antara 0 sampai 4.294.967.295. Dapat kita simpulkan juga bahwa tipe data integer dapat menampung bilangan bulat negatif, sedangkan unsigned integer tidak. Lalu pertanyaannya ketika Anda ingin menampilkan sebuah variabel yang bertipe data unsigned int bagaimana format penulisan yang Anda gunakan ? Apakah sama seperti ini ?

unsigned int data = 4294967295;
printf("%dn",data);

Sebagaian besar programmer pemula tidak terlalu memperhatikan format penulisan untuk menampilkan tipe data. Kebanyakan dari mereka menggunakan %d untuk menampilkan variabel yang bertipe data integer ataupun unsigned integer, seperti yang tertulis pada baris code diatas. Lalu kesalahannya letaknya dimana ? Untuk lebih jelasnya tuliskan listing program lengkapnya seperti di bawah ini.

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

int main() {
 unsigned int data = 4294967295;
 printf("%dn",data);
 system("pause");
 return 0;
}

Coba jalankan program diatas, kemudian perhatikan apa yang ditampilkan ! Program akan menampilkan nilai seperti berikut ini.

Kesalahan Programmer Pemula
Kesalahan Programmer Pemula

Kenapa tidak sesuai dengan yang kita inisialisasikan pada program yaitu 4294967295 ? Apakah ada kesalahan pada komputer kita ? Jawabnya adalah tidak !! Terus apa yang salah ? Perhatikan tipe data yang digunakan dan format penampilan datanya. Pada saat deklarasi kita menggunakan tipe data unsigned integer. Sedangkan pada saat menampilkannya kita menggunakan format %d yang sebenarnya format yang digunakan untuk menampilkan data integer. Sehingga program akan menampilkan data tersebut dalam format integer bukan unsigned integer. Seperti yang kita ketahui bilangan integer mempunyai range antara –2.147.483.648 sampai 2.147.483.647. Apakah nilai 4.294.967.295 masuk dalam jangkauannya ? tentunya tidak. Lalu kenapa yang ditampilkan adalah nilai –1 ? Untuk menjawab hal ini kita akan sedikit bermain dengan bilangan biner terlebih dahulu 🙂 .

Sebelum membahas jauh tentang jawaban pertanyaan diatas, sebelumnya saya tekankan terlebih dahulu bahwa bilangan biner itu tidak selalu positif !! Ada juga bilangan biner bertanda (bisa positif bisa juga negatif) atau lebih dikenal dengan signed. Ada juga bilangan biner yang positif saja (hanya bernilai positif) atau lebih dikenal dengan unsigned. Lalu bagaimana kita tahu bahwa bilangan itu signed atau unsigned, sebenarnya tidak ada perbedaan keduanya hanya saja kita melihatnya dari sisi mana ? signed atau unsigned. Jika kita melihat suatu bilangan biner dari sisi unsigned maka semua nilai desimalnya adalah positif contohnya 0001 => 1, 1111 => 15, dst. Lalu bagaimana dengan bilangan negatif ? Jika kita memandang sebuah bilangan biner dari sisi signed (bertanda) maka yang menandakan bilangan itu positif atau tidak adalah nilai pada bit MSB nya. Jika bit MSB bernilai 0 maka dapat dikatakan bahwa bilangan itu adalah bilangan positif, namun jika bit MSB-nya bernilai 1 maka dapat dikatakan bahwa bilangan itu bernilai negatif. Untuk lebih jelasnya perhatikan ilustrasi dari bilangan biner 4 bit di bawah ini.

Kesalahan Programmer Pemula
Kesalahan Programmer Pemula

Bagian kanan merupakan nilai unsigned-nya, sedangkan bagian kiri merupakan nilai signed-nya. Pada saat kita menampilkan isi variabel pada layar (printf), komputer akan melihat format data yang akan ditampilkan, jika menggunakan %d maka komputer akan menampilkan bilangan integernya (sebelah kiri) namun jika menggunakan %u maka komputer akan menampilkan bilangan unsignednya (sebelah kanan).

Pada listing program diatas, kita telah mendeklarasikan variabel dengan tipe data unsigned integer, namun format penampilannya digunakan format integer. Sehingga komputer akan menampilkan dengan format signed (bertanda). Karena integer dan unsigned integer merupakan tipe data dengan lebar 32bit, maka kita bisa mengkonversi nilai tersebut menjadi biner seperti di bawah ini.

Kesalahan Programmer Pemula
Kesalahan Programmer Pemula

Pada gambar diatas dapat dilihat bahwa nilai 4.294.967.295 jika dilihat dari sisi signed integer adalah bernilai -1. Sehingga dapat kita simpulkan jawaban untuk pertanyaan diatas kenapa nilai yang ditampilkan adalah -1. Yaitu karena kita salah menuliskan format untuk menampilkan data. Seharusnya menggunakan %u untuk tipe data unsigned integer agar program menampilkan data dari sisi unsigned (kanan) bukan signed (kiri) !!

Semoga penjelasan berikut ini dapat menambah pengetahuan Anda tentang programming, dan ingat untuk menampilkan data yang bertipe unsigned int gunakanlan %u jangan %d 😀

About Eko Rudiawan

Seorang lelaki yang punya ketertarikan dengan dunia elektronika dan robot yang saat ini sedang serius belajar tentang dunia bisnis dan internet marketing. My dream to be success technopreneur

Check Also

Software Bahasa C Di Linux Untuk Belajar Pemrograman

Software Bahasa C Di Linux Belajar bahasa pemrograman C tidak hanya bisa dilakukan pada sistem …

Leave a Reply

Your email address will not be published. Required fields are marked *

14 + 14 =