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