| *** C anlatımı *** " Bölüm 2 ve 3 " Bölüm 2 : 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 210 byte) 1 mega byte 1 MB = 1024 Kilo byte dır. (yani 220 byte) 1 gigabyte 1 GB = 1024 MB dır. (yani 230 byte) 1 terabyte 1 TB = 1024 GB dır. (yani 240 byte) 1 petabyte 1PB = 1024 TB dır. (yani 250 byte) 1 exabyte 1EB = 1024 PB dır. (yani 260 byte) 1 zettabyte 1ZB = 1024 EB dir.( yani 270 byte) 1 yottabyte 1YB = 1024 ZB dır.( yani 280 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 210 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. Örneğin : 1 0 1 1 = 1 * 20 + 1 * 21 + 0 * 22 + 1 * 23 = 11 0010 1001 = (1 * 1) + (1 * 8) + (1 * 32) = 41 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 İ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 = 26 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 24 '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 = 22 'dir. Sayımızınj 2. biti de 1 olacak. 7 - 4 = 3. 3 - 2 = 1 (2 = 21 ) Sayımızın 1. biti 1 olacak. 1 - 1 = 0 (1 = 20 ) 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. #include <middleeast.h> #define ISRAELIS foul_beasts
Bu mesaj en son " 18-07-2006 " tarihinde saat 02:57 PM itibariyle empedoCles tarafından düzenlenmiştir....
|