Komplemen
Di
dalam matematika, bilangan negatif biasanya dinyatakan dengan cara menambahkan
tanda − di depan bilangan tersebut. Namun di dalam komputer, bilangan hanya
dapat dinyatakan sebagai kode biner 0 dan 1 tanpa ada simbol yang lainnya, sehingga
diperlukan suatu cara untuk mengkodekan tanda minus.
Beberapa
metode yang dapat digunakan untuk menyatakan bilangan bertanda di sistem
bilangan biner adalah: sign-and-magnitude, komplemen satu (ones' complement),
dan komplemen dua (two's complement).
Komputer
modern pada umumnya menggunakan metode komplemen dua, namun metode lain juga
digunakan pada situasi tertentu.
Metode Sign-and-magnitude
8 bit signed magnitude
|
||
Binary
|
Signed
|
Unsigned
|
00000000
|
+0
|
0
|
00000001
|
1
|
1
|
...
|
...
|
...
|
01111111
|
127
|
127
|
10000000
|
-0
|
128
|
10000001
|
-1
|
129
|
...
|
...
|
...
|
11111111
|
-127
|
255
|
Untuk menyatakan tanda bilangan
(positif atau negatif), dapat digunakan salah satu bit yang ada untuk menyatakan
tanda tersebut. Bit tersebut (biasanya bit yang pertama atau most
significant bit) diset
bernilai 0 untuk bilangan positif, dan 1 untuk bilangan
negatif. Bit-bit yang lain menyatakan magnitude atau nilai mutlak dari
bilangan. Jadi di dalam satu byte (8-bit), satu bit digunakan sebagai tanda,
dan 7 bit sisanya sebagai magnitude yang nilainya bisa berisi mulai dari
0000000 (0) sampai 1111111 (127).
Cara ini dapat digunakan untuk
merepresentasikan bilangan dari −12710 sampai +12710.
Konsekuensi dari metode ini adalah: akan ada dua cara untuk menyatakan nol,
yaitu 00000000 (0) dan 10000000 ([-0|−0]). Komputer generasi awal
(misalnya IBM 7090)
menggunakan metode ini. Sign-and-magnitude adalah cara yang banyak dipakai
untuk merepresentasikan significand di
dalam bilangan floating point.
Komplemen satu (Ones' complement)
8 bit ones' complement
|
||
Binary value
|
Ones' complement interpretation
|
Unsigned interpretation
|
00000000
|
+0
|
0
|
00000001
|
1
|
1
|
...
|
...
|
...
|
01111101
|
125
|
125
|
01111110
|
126
|
126
|
01111111
|
127
|
127
|
10000000
|
-127
|
128
|
10000001
|
-126
|
129
|
10000010
|
-125
|
130
|
...
|
...
|
...
|
11111110
|
-1
|
254
|
11111111
|
-0
|
255
|
Sistem yang dikenal dengan nama
komplemen satu (ones' complement) juga dapat digunakan untuk merepresentasikan
bilangan negatif. Bentuk komplemen satu untuk bilangan biner negatif diperoleh
dengan cara membalik seluruh bit dari bilangan biner positifnya. Bit yang
bernilai 0 dibalik menjadi 1, dan bit yang bernilai 1 dibalik menjadi 0.
Seperti pada metode sign-and-magnitude, di metode komplemen satu ini ada dua
cara merepresentasikan bilangan nol, yaitu : 00000000 (+0) dan 11111111
([-0|−0]).
Contoh, bentuk komplemen satu dari
00101011 (43) adalah 11010100 (−43). Jangkauan dari bilangan bertanda dengan
komplemen satu adalah -(2N-1-1) sampai (2N-1-1) dan +/-0.
Untuk sistem 8-bit (byte) jangkauannya adalah -12710 sampai
+12710 dengan nol bisa berbentuk 00000000 (+0) atau 11111111
(-0).
Metode komplemen satu ini banyak
dipakai di komputer generasi lama, seperti PDP-1, CDC 160A dan UNIVAC
1100/2200 series.
Komplemen dua (Two's complement)
8 bit two's complement
|
||
Binary value
|
Two's complement interpretation
|
Unsigned interpretation
|
00000000
|
0
|
0
|
00000001
|
1
|
1
|
...
|
...
|
...
|
01111110
|
126
|
126
|
01111111
|
127
|
127
|
10000000
|
-128
|
128
|
10000001
|
-127
|
129
|
10000010
|
-126
|
130
|
...
|
...
|
...
|
11111110
|
-2
|
254
|
11111111
|
-1
|
255
|
Di dalam metode komplemen dua,
bilangan negatif direpresentasikan dengan cara menambahkan satu pada bentuk komplemen
satu dari suatu bilangan positif. Di dalam metode komplemen dua, hanya ada satu
bilangan nol (00000000).
Tidak ada komentar:
Posting Komentar