Yalnız Mesajı Göster
  #2  
Eski 18-07-2006, 02:47 PM
empedoCles kullanıcısının avatarı
empedoCles empedoCles Çevrimdışı
Müdavim
 
Giriş: Sep 2005
Mesaj: 123
empedoCles İtibar düzeyini kapadı
Negatif bir tamsayı ikilik sistemde nasıl gösterilir?


Negatif tamsayıların da ifade edildiği ikilik sayı sistemine işaretli ikilik sayı sistemi (signed binary system) denir. İşaretli ikilik sayı siteminde, negatif sayıları göstermek için hemen hemen tüm bilgisayar sistemlerinde aşağıdaki yol izlenir:

Sayının en yüksek anlamlı biti işaret biti (sign bit) olarak kabul edilir. Ve bu bit 1 ise sayı negatif, bu bit 0 ise sayı pozitif olarak değerlendirilir. İkilik sistemde bir negatif sayı aynı değerdeki pozitif sayının ikiye tümleyenidir. Örnek olarak, ikilik sistemde yazacağımız –27 sayısı yine ikilik sistemde yazılan 27 sayısının ikiye tümleyenidir.

Pozitif olan sayıların değerini tıpkı işaretsiz sayı sisteminde olduğu gibi elde ederiz:

0001 1110 işaretli sistemde pozitif bir sayıdır. (Decimal olarak 29 sayısına eşittir.)

Ancak negatif olan sayıların değerini ancak bir dönüşümle elde edebiliriz:

1001 1101 işaretli sistemde negatif bir sayıdır. (Çünkü işaret biti 1)

2lik sistemde ifade edilen negatif bir sayının 10’luk sistemde hangi negatif sayıya eşit olduğunu nasıl bulunur?

Sayının en yüksek anlamlı biti (MSD) işaret bitidir. Bu bit 1 ise sayı negatifdir. Sayının kaça eşit olduğunu hesaplamak için ilk önce sayının 2’ye tümleyeni bulunur. Ve bu sayının hangi pozitif sayıya karşılık geldiğini hesap edilir. Elde etmek istenen sayı, bulunan pozitif sayı ile aynı değerdeki negatif sayı olacaktır.

Örneğin 1001 1101 sayısının 10’luk sistemde hangi sayıya karşılık geldiği bulunmak istenirse:

Sayının en soldaki biti 1 olduğuna göre bu sayı negatif bir sayı olacaktır. Hangi negatif sayı olduğunu bulmak için sayının 2’ye tümleyenini alınır.

1001 1101 sayısının ikiye tümleyeni 0110 0011 sayısıdır.

Bu sayının 10'luk sistemde hangi sayıya denk olduğu hesaplanırsa :
(1 * 1 + 1 * 2 + 0 * 4 + 0 * 8 + 0 * 16 + 1 * 32 + 1 * 64 = 99)

ilk yazılan sayının -99 olduğu anlaşılmış olur.

10'luk sistemde ifade edilen negatif sayıların işaretli ikilik sistemde yazılması :

Önce sayının aynı değerli fakat pozitif olanı ikilik sistemde ifade edilir : Daha sonra yazılan sayının ikiye tümleyenini alınarak, yazmak istenilen sayı elde edilir.

Örnek : İkilik sistemde –17 yazmak istenirse;

önce 17 yazılır. 0001 0001
bu sayının 2'ye tümleyeni alınırsa 1110 1111 sayısı elde edilir.


Sayı değeri aynı olan Negatif ve Pozitif sayılar birbirlerinin ikiye tümleyenleridir.
İkilik sistemde gösterilmiş olsa da aynı sayının negatifiyle pozitifinin toplamı 0 değerini verecektir. (Deneyiniz!)

Bir byte’lık (8 bitlik) bir alana yazabileceğimiz (işaret bitini dikkate almadan) en büyük sayı 255 (1111 1111) ve en küçük sayı ise 0’dır.(0000 0000). Peki işaret biti dikkate alındığında 1 byte’lık alana yazılabilecek en büyük ve en küçük sayılar ne olabilir?

En büyük sayı kolayca hesaplanabilir. işaret biti 0 olacak (yani sayı pozitif olacak) ve sayı değerini en büyük hale getirmek için diğer bütün bit değerleri 1 olacak, bu sayı 0111 1111 sayısıdır. Bu sayıyı desimal sisteme dönüştürürsek 127 olduğunu görürüz. Peki ya en küçük negatif sayı kaçtır ve nasıl ifade edilir?

0111 1111 sayısının ikiye tümleyenini alındığında –127 sayısını elde edilir.
1000 0001 (127) Bu sayıdan hala 1 çıkartabilir.
1000 0000 (-128) 1 byte alana yazılabilecek en küçük negatif sayıdır.

Burada dikkat edilmesi gereken iki önemli nokta vardır :

1 byte alana yazılabilecek en büyük sayı sınırı aşıldığında negatif bölgeye geçilir.
0111 1111 (en büyük pozitif tamsayı)
1 (1 toplarsak)
1000 0000 (-128 yani en küçük tamsayı)
yani 1 byte alana yazılabilecek en büyük tamsayıya 1 eklendiğinde 1 byte alana yazılabilecek en küçük tamsayıyı elde ederiz.
1 byte alana yazılabilecek en küçük tamsayıdan 1 çıkardığımızda da 1 byte alana yazılabilecek en büyük tamsayıyı elde ederiz.

Yukarıda anlattıklarımıza göre -1 sayısının işaretli ikilik sayı sisteminde 8 bitlik bir alanda aşağıdaki şekilde ifade edilecektir.

-1 = 1111 1111

Yani işaretli ikilik sayı sisteminde tüm bitleri 1 olan sayı -1'dir. İleride bu sayıyla çok işimiz olacak!
imza

#include <middleeast.h>

#define ISRAELIS foul_beasts






empedoCles kullanıcısına MSN aracılığı ile mesaj yolla
Alıntı Yaparak Cevapla