Sudut pandang tipe data integer di C++

Dalam bahasa C ada beberapa jenis tipe data salah satunya adalah integer. Tipe data integer direpresentasikan dengan dua cara yaitu:
a. Bilangan tidak negatif(unsigned),
b. Bilangan negatif, nol dan positif(signed)
Pada pemrograman bahasa C tipe data integer mempunyai panjang data 32 bit(4 byte) untuk lebih jelasnya dapat dilihat pada tabel di bawah ini.


Di bawah ini ukuran tipe data dengan jumlah bit yang berbeda atau disebut juga dengan word



Nah, sekarang kita sudah mengetahui ukuran panjang tipe data integer mari kita lihat tipe data integer ini dari sudut pandang signed dan unsigned. Kita akan menggunakan 4 bit tipe data integer sebagai ilustrasi untuk mempermudah dalam pembahasan materi ini. Di bawah ini tabel tipe data integer 4 bit.  























Mari kita buktikan bahwa dengan menggunakan signed dan unsigned yang salah pada tipe data integer akan menyebabkan kesalahan fatal pada sebuah program. Kita akan mengambil contoh operasi aritmatik pada pemrograman bahasa C.

Contoh:
Source Code:



Hasil eksekusi

Penjelasan:
Pada baris program x = 2147483647 + 1, secara matematika menghasilkan 2147483648 tapi pada  program di atas menghasilkan -2147483648, kenapa? Untuk lebih mudah dalam pemahaman perhatikan tabel tipe data integer 4 bit. Nilai maksimum dari int(signed)/Tmak adalah 7 ketika kita menambahkannya dengan 1 maka program akan pindah satu langkah ke bawah sehingga hasilnya -8. Hal ini sama halnya dengan kasus diatas ketika kita menambahkan Tmak dari integer 32 bit maka hasilnya -2147483648. Muncul pertanyaan dalam benak kita, apakah komputer ini salah menjumlahkan? Ternyata tidak, hanya kita saja yang salah menggunakan tipe data. Seharusnya pada penjumlahan ini kita menampilkan hasilnya dengan tipe data unsigned yang mempunyai panjang data sampai 4294967295.   

Pada baris program y = -2147483648 – 2147483647, secara matematika menghasilkan -4294967295, tetapi hasil eksekusi program menghasilkan 1, mari kita kembali ke tabel int 4 bit. Perhatikan Tmin nilainya adalah -8 ketika kita mengurangkan dengan 7 maka program akan mengeksekusi 7 langkah ke bagian atas sehingga hasilnya adalah 1. Hal ini juga sama untuk integer 32 bit.

Pada penjumlahan yang ketiga program akan membaca nilai awal kembali karena 4294967295 merupakan nilai Umak pada integer 32 bit. Untuk lebih jelas perhatikan tabel tipe data integer 4 bit. Nilai Umak adalah 15 ketika ditambahkan dengan 1 maka program akan mengulang membaca data keawal lagi karena tidak ada data lagi setelah Umak sehingga hasil eksekusi program adalah 0 (nol).
                                                                                                                                                           by
                                                                                                                           

0 komentar:

Posting Komentar

Followers

Total dilihat

Diberdayakan oleh Blogger.

online log book

Cari Blog Ini