13 Ocak 2015 Salı

Sayı Sistemleri


Günlük hayatta 10’luk sayı sistemini kullanıyoruz. 10 luk sistemde bir sayının değeri aslında her bir basamak
değerinin 10 sayısının ilgili kuvvetiyle çarpımlarının toplanmasıyla elde edilir.
Örneğin 1273 = (3 * 1) + (7 * 10 ) + (2 * 100) + (1 * 1000)
Ancak bilgisayar sistemlerinde bütün bilgiler ikilik sistemde(binary system) ifade edilir.
Genel olarak sayı sistemi kaçlıksa o sayı sisteminde o kadar sembol bulunur.
Örneğin 10’luk sistemde 10 adet sembol vardır ve bu semboller 0, 1, 2, 3, 4, 5, 6, 7, 8, 9’dur.
Aynı şekilde ikilik sayı sisteminde yalnızca iki adet sembol bulunur. Yani yalnızca 0 ve 1.
Bir sayıyı başka bir sayı sisteminde ifade etmek o sayının değerini değiştirmez. Yalnızca sayının gösteriliş
biçimi değişir. Örneğin onluk sayı sisteminde sayısal değeri 32 olan büyüklüğü çeşitli farklı sayı sistemlerinde
farklı biçimlerde gösterebiliriz ama sayının büyüklüğünü değiştirmiş olmayız.
İkilik  sistemde  her  bir  basamağa  1  bit  denir.  Bit  kelimesi  binary  digit sözcüklerinden
türetilmiştir.

Örneğin 1011 sayısı 4 bittir. (Ya da 4 bit uzunluğundadır).
11011001 sayısı 8 bittir.
8 bitlik bir büyüklük bir byte olarak isimlendirilir.
1 kilobyte 1K = 1024 byte dır. (yani 2
10
byte)
1 mega byte 1 MB = 1024 Kilo byte dır. (yani 2
20
byte)
1 gigabyte 1 GB = 1024 MB dır. (yani 2
30
byte)
1 terabyte 1 TB = 1024 GB dır. (yani 2
40
byte)
1 petabyte 1PB = 1024 TB dır. (yani 2
50
byte)
1 exabyte 1EB = 1024 PB dır. (yani 2
60
byte)
1 zettabyte 1ZB = 1024 EB dir.( yani 2
70
byte)
1 yottabyte 1YB = 1024 ZB dır.( yani 2
80
byte)
Kilo büyüklük olarak 1000 kat anlamına gelmektedir, ancak bilgisayar alanında Kilo 2'nin 1000'e en yakın
kuvveti olan 2
10
yani 1024 kat olarak kullanılır.
4 bit  1 Nybble (Nibble şeklinde de yazılır)
8 bit  1 byte
16 bit  1 word
32 bit  1 double word
64 bit  1 quadro word
olarak da isimlendirilmektedir.
ikilik sisteme ilişkin genel işlemler
i. İkilik sistemdeki bir sayının 10 luk sistemde ifade edilmesi:
ikilik  sayı  sisteminde  ifade  edilen  bir  sayının  10’luk  sistemdeki  karşılığını  hesaplamak  için  en  sağdan
başlayarak bütün basamakları tek tek 2’nin artan kuvvetleriyle çarpılır.

Bu arada sık kullanılan iki terimi de açıklayalım. İkilik sayı sisteminde yazılan bir sayının en solundaki bit,
yukarıdaki örnekten de görüldüğü gibi en yüksek sayısal değeri katıyor. Bu bite en yüksek anlamlı bit (most
significant digit) diyeceğiz ve bu bit için bundan sonra MSD kısaltmasını kullanacağız.
İkilik sayı sisteminde yazılan bir sayının en sağındaki bit, yine yukarıdaki örnekten de görüldüğü gibi en
düşük sayısal değeri katıyor. Bu bite en düşük anlamlı bit (least significant digit) diyeceğiz ve bu bit için
bundan sonra LSD kısaltmasını kullanacağız.
Örnek :
0101 1101 sayısı için
MSD = 0
LSD = 1
11
2
İkilik sayı sisteminde yazılan bir sayının belirli bir basamağından (bitinden) söz ettiğimizde, hangi bitten söz
edildiğinin doğru bir şekilde anlaşılması için basamaklar numaralandırılır.
8 bitlik bir sayı için, sayının en sağındaki bit (yani (LSD) sayının 0. bitidir. Sayının en solundaki bit (yani
MSD) sayının 7. bitidir.
ii. 10’luk sistemdeki bir sayının 2’lik sistemde ifadesi :
Sayı sürekli olarak 2 ye bölünür. Her bölümden kalan değer( yani 1 ya da 0) oluşturulacak sayının 0. bitinden
başlayarak, basamaklarını oluşturacaktır. Bu işleme 0 sayısı elde edilinceye kadar devam edilir. Örnek:
87 sayısını ikilik sayı sisteminde ifade etmek isteyelim:
87 / 2 = 43 (kalan 1) Sayının 0. biti 1
43 / 2 = 21 (kalan 1) Sayının 1. biti 1
21 / 2 = 10 (kalan 1) Sayının 2. biti 1
10 / 2 = 5 (kalan 0) Sayının 3. biti 0
5 / 2 = 2 (kalan 1) Sayının 4. biti 1
2 / 2 = 1 (kalan 0) Sayının 5. biti 0
1 / 2 = 0 (kalan 1) Sayının 6. biti 1
87 = 0101 0111
İkinci bir yöntem ise 10 luk sistemde ifade edilen sayıdan sürekli olarak 2'nin en büyük kuvvetini çıkarmaktır.
2’nin çıkarılan her bir kuvveti için ilgili basamağa 1 değeri yazılır. Bu işleme 0 sayısı elde edilene kadar
devam edilir. Örnek:
Yine 87 sayısını ikilik sayı sisteminde ifade etmek isteyelim:
87'den çıkarılabilecek, yani 87'den büyük olmayan ikinin en büyük kuvveti nedir? Cevap 64. O zaman 64 = 2
6
olduğuna göre 6.bit 1 değerini alacak.
87 - 64 = 23. Şimdi 23'den çıkarılabilecek ikinin en büyük kuvvetini bulalım. Bu say1 16'dır. Yani 2
4
'dür. O
zaman sayımızın 4. biti de 1 olacak.
23 - 16 = 7. 7'den çıkarılabilecek ikinin en büyük kuvveti 4'dür ve 4 = 2
2
'dir. Sayımızınj 2. biti de 1 olacak.
7 - 4 = 3.
3 - 2 = 1 (2 = 2
1
) Sayımızın 1. biti 1 olacak.
1 - 1 = 0 (1 = 2
0
) Sayımızın 0. biti 1 olacak.
1 değeri olmayan tüm bitleri 0 bitiyle doldurarak sayımızı ikilik sistemde ifade edelim:
87 = 0101 0111
iii.  İkilik  sistemde  ifade  edilen  bir  sayının  1’e  tümleyeni.  Sayının  tüm  bitlerinin  tersinin
alınmasıyla elde edilir. Yani sayıdaki 1’ler 0 ve 0’lar 1 yapılır.
Bir sayının 1’e tümleyeninin 1’e tümleyeni sayının yine kendisidir.
iv. İkilik sistemde ifade edilen bir sayının 2’ye tümleyeninin bulunması:
Önce sayının 1’e tümleyeni yukarıdaki gibi bulunur. Daha sonra elde edilen sayıya 1 eklenirse sayının 2’ye
tümleyeni bulunmuş olur. 2'ye tümleyeni bulmak için daha daha pratik bir yol daha vardır : Sayının en
solundan başlayarak ilk defa 1 biti görene kadar (ilk görülen 1 dahil) sayının aynısı yazılır, daha sonraki tüm
basamaklar için basamağın tersi yazılır. (Yani 1 için 0 ve 0 için 1) Örneğin :
1110 0100 sayısının ikiye tümleyeni 0001 1100 dır.
0101 1000 sayısının ikiye tümleyeni 1010 1000 dır.
Bir sayının ikiye tümleyeninin ikiye tümleyeni sayının kendisidir. (Deneyiniz)
8 bitlik bir alana yazılacak en büyük tam sayı kaçtır?
1111 1111 = 255 dir. (1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255)
8 bitlik bir alana yazılacak en küçük tam sayı kaçtır?
0000 0000 = 0’dır.
Negatif bir tamsayı ikilik sistemde nasıl gösterilir?


SAYI SİSTEMLERİ

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 1ise sayı negatif, bu bit 0ise
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!
16’lık  sayı  sistemi  (hexadecimal  numbering  system)  ve  8’lik  sayı
sistemi (octal system)
Bilgisayarların tamamen 2’lik sistemde çalıştığını söylemiştik, ama yukarıda görüldüğü gibi 2’lik sistemde
sayıların ifade edilmesi hem çok uzun hem de zahmetli. Bu yüzden, yazım ve algılama kolaylığı sağlamak
için 16’lık ve 8’lik sayı sistemleri de kullanılmaktadır.
16'lık ve 8’lik sayı sistemlerinde sayılar daha yoğun olarak kodlanıp kullanabilir.
Başta da söz edildiği gibi 10 luk sistemde 10, 2’lik sistemde ise 2 sembol bulunmaktadır. Bu durumda 16’lık
sayı sisteminde de 16 sembol bulunur.
ilk 10 sembol 10'luk sistemde kullanılan sembollerle tamamen aynıdır :
1, 2, 3, 4, 5, 6, 7, 8, 9,
Daha sonraki semboller
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
16’lık sayı sisteminde yazılmış bir sayıyı 10’luk sisteme çevirmek için, en sağdan başlayarak basamak
değerleri 16’nın artan kuvvetleriyle çarpılır :
01AF = (15 * 1) + (10 * 16) + (1 * 256) + (0 * 4096) = 431
10’luk sistemde yazılmış bir sayıyı 16’lık sisteme çevirmek için 10 luk sistemden 2’lik sisteme yapılan
dönüşümlerdekine benzer şekilde sayı sürekli 16 ya bölünerek, kalanlar soldan sağa doğru yazılır.
Pratikte 16 lık sayı sistemlerinin getirdiği önemli bir avantaj vardır. Bu avantaj 16 lık sayı sistemi ile 2’lik sayı
sistemi arasındaki dönüşümlerin kolay bir şekilde yapılmasıdır.
16’lık sistemdeki her digit 2’lik sistemdeki 4 bit (1 Nibble) alan ile ifade edilebilir :
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
14
SAYI SİSTEMLERİ
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
Örnek : 2ADFH sayısının (en sondaki H sayının hexadecimal olarak gösterildiğini anlatır yani sayıya ilişkin
bir sembol değildir) 16'lık sistemde ifadesi :
2 = 0010
A = 1010
D = 1101
F = 1111
Bu durumda 2ADFH = 0010 1010 1101 1111
2’lik sistemden 16’lık sisteme yapılacak dönüşümler de benzer şekilde yapılabilir :
Önce sayıları sağdan başlayarak dörder dörder ayırırız (en son dört eksik kalırsa sıfır ile tamamlarız.) Sonra
her bir dörtlük grup için doğrudan 16'lık sayı sistemindeki karşılığını yazarız.
1010 1110 1011 0001 = AEB1H
0010 1101 0011 1110 = 2D3EH
soru : 16'lık sayı sisteminde 2 byte'lık bir alanda yazılmış olan 81AC H sayısı pozitif mi negatif midir?
cevap : Sayının yüksek anlamlı biti 1 olduğu için, işaretli sayı sistemlerinde sayı negatif olarak
değerlendirilecektir. (1001 0001 1010 1100)
16 bitlik bir alanda ve işaretli sayı sisteminde -1 sayısını nasıl ifade edebiliriz :
Cevap : FFFF
8’lik sayı sistemi (octal numbering system)
Daha az kullanılan bir sayı sistemidir.
8 adet sembol vardır. (0 1 2 3 4 5 6 7)
8’lik sayı sisteminin her bir digiti 2’lik sistemde 3 bit ile ifade edilir.
001 1
010 2
011 3
100 4
101 5
110 6
111 7
8'lik sayı sisteminin de kullanılma nedeni, 2'lik sayı sistemine göre daha yogun bir ifade tarzı olması, ve ikilik
sayı sistemiyle, 8'lik sayı sistemi arasında yapılacak dönüşümlerin çok kolay bir biçimde yapılabilmesidir.

0 Yorum:

Yorum Gönder