Sayı Sistemi Nedir?

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
trwe
Terabyte2
Terabyte2
Mesajlar: 4435
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Konum: Düzce/Akçakoca

Sayı Sistemi Nedir?

Mesaj gönderen trwe » 16 Kas 2013, 22:38

Sayı Sistemi Nedir?
--------------------------------------------------------------------------------------------------------------------
Sayı sistemi konusu eminim bir şekilde programlamayla uğraşanların ilgisini çekmiştir. Daha doğrusu, çekmekle kalmıştır. Oysa bu konu şifreleme, dosyalama ve matematiksel işlemler için programcıya çok büyük yararlar sağlayabilir. Eğer onluk sayı sistemi dışındakilere de ucundan kıyısından bulaşayım diyorsanız, sizi şöyle alalım.

Bu konuyu tam anlamıyla kavramanın yolu ilk önce onluk sayı sistemini şöyle iyice bir kurcalamaktan, mantığını çözmekten geçiyor. Öncelikle sayıların tamamen bir olasılık hesabından ibaret olduğunu söylemeliyim. Ortaokul düzeyinde matematiği olanların kolayca çözebileceği şekilde, elimizde iki haneli bir ondalık sayı varsa, onluk sayı sisteminde de 10 tane simge(0123456789) bulunduğuna ve ilk basamağa “0” koyamayacağımıza göre 10*10-1=99 en fazla 99 tane farklı sayı yazabiliriz. Temel yapı budur.
Şimdi bunu biraz daha kurcalayıp esas mantığa gelelim. Bize ilkokulda öğretilen şey şuydu= “Basamak ne kadar büyükse 1’e o kadar 0 ekle ve basamaktaki sayıyla çarp.” Peki neden oraya sıfır ekliyorduk? Basamaklar kuvvetiyle çoğalır da ondan.

Şöyle açıklamak gerekirse 125 sayısı=

5 * 10üssü0(=5 her sayının 0 ile kuvveti 1’dir) + 2*10üssü1(=20) + 1*10üssü3(=100)
yani 5 + 20 + 100 =125

Gördüğünüz gibi gittikçe artan bir şekilde 10’un kuvvetiyle çarpıyoruz. Ve dikkatinizi çekerse tersten başladık, çünkü en küçük basamak en sağdakidir. Basit bir açıklaması var, değil mi? Şimdi bir de 2lik sayı sistemine göz atalım.

2lik sayı sistemi belli ki hard diskte ve RAM’da kolayca bilgi saklayabilmek için ortaya çıkmış bir kavramdır. Mesela bir CD’nin üzerinde taranan yerde delik varsa 0 yoksa 1 olarak kaydedebilmek için. Ya da tam tersi, 2lik sayı sisteminde tabii ki iki simge vardır(0,1) . Yani bu sefer 10’un kuvvetlerini değil de 2’nin kuvvetlerini alacağız. Yani bu sefer karşımızda 2ler basamağı, 4ler basamağı,8ler basamağı,16lar basamağı olacak. Bildiğiniz gibi 1 byte 8 bit, 1 integer 16bit, 1 Long 32bit yer tutuyor (VB6’da). Bunları oturup kendiniz de hesaplayabilirsiniz. Permütasyon hesabına göre her basamakta 2 farklı seçenek varsa 2üssü8=256 Yani 0’dan 255’e kadar olan sayıyı 8bitlik alanda saklayabiliyoruz. Şimdi de bir uygulamasını yapalım.

101011 hangi sayıyı temsil ediyor?tersten başlayarak 2’nin kuvvetleriyle çarpıyoruz.

1*2üssü0(=1) + 1*2üssü1(=2) + 0*2üssü2(=0) + 1*2üssü3(=8) + 0* 2üssü4(=0) + 1*2üssü5(=32)

1+2+8+32=43 sayısına denk geliyor imiş.

Bendeniz burada hiçbir kalıba sığmayan 7bitlik bir uzunluk kullandım, bu 0 ile 127 arası sayılar anlamına geliyor. Eğer sayı küçükse, uygun uzunluğa getirmek için başına istediğiniz kadar 0 ekleyebilirsiniz, bu hiçbir şey ifade etmez. Ama çarpmaya ters yönden başladığımız için aman sonuna eklemeyiniz.

Şimdi diyeceksiniz ki: “biz bunu onluk sisteme çevirdik, onluk sayıyı ikilik sisteme nası çevireceğiz?” Şöyle ki nasıl bunları 2’nin kuvvetiyle çarptıysak, şimdi de aynı işlemin tersini yapıp bunları paşa paşa 2’ye böleceğiz. Eğer 2’ye bölünebiliyorsa 0, bölünemiyor ise 1 koyacağız. Tam bir deneme olması için önceki sayımız 43’ü ele alacağız. Bakalım aynı sonuca ulaşıyor muyuz?
Ve bölmeye başlıyoruz:

43 / 2 = 21 kalan 1
21 / 2 =10 kalan 1
10 / 2 = 5 kalan 0
5 / 2 =2 kalan 1
2 / 2 = 1 kalan 0
1 / 2 = 0 kalan 1

Ve deneyimiz başarılı oldu. Yine 101011 elde ettik. Şimdi bir de 16lık(Hexadecimal) sayı sistemine bakalım. Bu sistemdeki sembol olayları biraz karışık. Haliyle sayı sembolleri yetmediği için harflere taşıyor(0123456789ABCDEF) Burada da her sayı sisteminde olması zorunlu olan 1ler basamağı(her sayının 0 ile kuvveti 1 olduğundan),16lar basamağı, 256lar basamağı, 4096lar basamağı vs. bulunuyor. Anlayacağınız gibi bu sistemde 3,4 haneli sayılar “hayvansal sayılar” statüsüne giriyor. Mesela ;

3B sayısının ondalık açılımı ne olur ki? Bir bakalım:
(“8,9,A,B” B burada 11 anlamına geliyor)

B*16üssü0(=11) + 3*16üssü1(=48)
11+48=59 imiş.

Şimdi bir de bu 59 sayısını 16lık sisteme geri nasıl çeviririz ona bakalım.Gayet kolay:

59/16=3 kalan 11(Yani B)
3/16=0 kalan 3


Herkese İyi Günler
TRWE_2012
:oops: :oops: :) :)
TRWE_2016
FEDAKARLIK OLMADAN ZAFER OLMAZ....!



Cevapla