Kamis, 26 April 2012

Representasi Integer

Dalam bahasa pemrograman C, kita mengenal banyak tipe data diantaranya adalah
Salah satu yang akan dibahas adalah tipe data integer.


Integer direpresentasikan dengan 2 (dua) cara :
1. Bilangan tidak negatif (Unsigned)
    Dalam bahasa pemrograman bilangan tidak negatif ini ditulis : unsigned [int]
2. Bilangan negatif, nol dan positif (Two's Complement/Signed)
    Dalam bahasa pemrograman bilangan bertanda ini ditulis : int.

Representasi biner bilangan Integer  pada mesin 4 bit :


Binner
Unsigned
Two’s Complement (Signed)
0000
0
0
0001
1
1
0010
2
2
0011
3
3
0100
4
4
0101
5
5
0110
6
6
0111
7
7
1000
8
-8
1001
9
-7
1010
10
-6
1011
11
-5
1100
12
-4
1101
13
-3
1110
14
-2
1111
15
-1

Nilai Minimum dan Maksimum
 1. Unsigned
      Umin = 0
      Umax = 2w-1
      Jika pada mesin 4 bit --> w=1, maka nilai Umax = 24-1 = 15 
2. Two's Complement (Signed)
    Tmin = -2w-1
       Tmax= 2w-1-1

Casting Surprise

Jika unsigned dan signed di campur dalam satu ekspresi, maka ekspresi tersebut secara implisit  nilai signed akan di - cast menjadi unsigned termasuk untuk operasi <, > , ==, <=, >=

Contoh :
Misalkan W=32

Konstanta1
Konstanta2
Relasi
Evaluasi
0
0U
==
unsigned
-1
0
signed
-1
0U
unsigned
2147483647
-2147483648
signed
2147483647U
-2147483648
unsigned
-1
-2
signed
(unsigned) -1
-2
unsigned
2147483647
2147483648U
unsigned
2147483647
(int) 2147483648U
signed

Penjelasan :
Kita ambil contoh pada baris ke dua dan ke tiga, nilai pada konstanta1 dan konstanta2 baris ke 2 dan ke 3 bernilai sama, akan tetapi relasi (hubungan yang terbentuk berbeda) kenapa bisa demikian?

a. Pada baris ke dua konstanta1 dan konstanta2 bertipe signed, sehingga ketika kita bandingkan antara konstanta1 dan konstanta2, relasi yang terbentuk adalah < (lebih kecil) : -1<0
b. Pada baris ke tiga konstanta1 bertipe signed, sedangkan konstanta2 bertipe unsigned, sehingga ketika bandingkan antara kontanta1 dan konstanta2, maka konstanta1 akan di ubah menjadi bilangan unsigned (Casting Surprised), sehingga nilai -1 = Umax =4 924 967 295, relasi yang terbentuk adalah > (lebih besar) : 4 924 967 295 > 0



0 komentar:

Posting Komentar