BCD (Binary Coded Decimal)

PROGRAMLAMA

Programlama (programming), bilgisayarın donanıma nasıl davranacağını anlatan, bilgisayara yön veren komutlar..

Sayı ve Kodlama Sistemleri

İkili (binary) Sayı Sistemi

  • 1 bayt (8 bit) veri 28 yani 256 farklı değer alabilir

(00000000)2 = (0)10         (11111111)2 = (255)10

  • Örn: (175)10 = (?)2

10101111

175  2

-174  87  2

   1 -86  43  2

       1 -42  21  2

           1 -20  10  2

               1 -10  5  2

                   0 -4  2  2

                      1 -2  1

                         0  

  • Örn: (10110100)2 = (?)10 180
     

    27 26 25 24 23 22 21 20

    128 + 32 + 16 + 4 = 180

Onaltılı (hexadecimal) Sayı Sistemi

İkili sayı sisteminin okunabilirliğinin zor olması nedeniyle 16’lı sayı sistemi verilerin temsil edilmesinde sıklıkla kullanılır. 16’lı sayı sistemindeki her basamak 4 biti ifade eder (24 = 16).

Sekizli (Octal) Sayı Sistemi

  • 8’li sayı sistemi 3 bit büyüklüğe denk gelmektedir.
  • Önceki slaytta sadece sol taraftaki tablo
  • 16’lı sayı sisteminin 8’li sayı sistemine göre daha çok kullanılmasının nedeni: 1 bayt (8 bit) 2 tane 4 bitlik hexadecimal sayı ile ifade edilebilirken, 8 sayısı 3’e tam bölünmediği için ne 2 ne de 3 octal sayı bir bayta denk gelememektedir.

(200)10 = (??)16 = (???)8 = (????????)2

(C8)16 = (310)8 = (11001000)2

3C 1 80

Kaç bit gerekli?

  • n bit ile temsil edilebilecek en büyük sayı = 2n-1’dir.
  • n = 4 ise 15, n = 8 ise 255, n = 16 ise 65535, …
  • Soru: (1.000.000)10 sayısını 2’li sayı sisteminde temsil edebilmek için kaç bit gereklidir?
  • 2n-1 >= 1.000.000 olması gereklidir. Bu durumda n en az 20 olmalıdır (210 = 1024 olduğuna göre 220 = 10242)

NOT: Bilgisayarda sayılar genellikle 1 bayt, 2 bayt, 4 bayt veya 8 bayt gibi büyüklüklerde saklanır. 3 bayt ya da 5 bayt gibi veri büyüklükleri programlama dillerinde yoktur. 1 milyon sayısı için 2 bayt (16 bit) yetmeyeceği için 4 bayt (32 bit) bir veri büyüklüğü seçmeliyiz.

32 bit ile 232-1 = 4.294.967.295’ e kadar sayıları temsil edebiliriz.

İkili Sayıların Tümleyenini Alma

  • İkili sayı sisteminde bir sayının tümleyenini almak o sayının 0 olan bitlerini 1, 1 olanları da 0’a çevirerek gerçekleştirilir (tersini veya değilini almak ta diyebiliriz).
  • Sonuçta sayı ile o sayının tümleyeni toplandığında tüm bitlerin 1 olduğu durum elde edilir.
  • Örn: Sayımız : (10110100)2 = (180)10

  Tümleyeni :  (01001011)2 = (75)10

  Toplamları :  (11111111)2 = (255)10

  • Bulduğumuz tümleyen «1’e göre tümleyen» olarak bilinir. Sayının tümleyenine 1 eklenmesi ise «2’ye göre tümleyen» olur. (01001100)2 = (76)10

Sayı ile ikiye göre tümleyenini toplarsak sol tarafa 1 bit taşma olur. 180 + 76 = 256 (bu değer 8 değil 9 bit ile ifade edilebilir: 100000000)

Negatif sayılar nasıl temsil edilir?

  • Negatif tamsayıları temsil etmek için 1 bitlik bilginin işaret (- veya +) için kullanılması düşünülebilir.
  • Örneğin 16 bit veri boyutu için:

  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 ise –

0 ise +

Kalan 15 bit ile 32.768 (215) sayı temsil edilebilir

  • Bu yöntemin olumsuz yanı sıfırın hem negatif hem de pozitif olarak değerlendirilmesidir (16 bitin tamamı 0 ise '+0', işaret biti 1 diğerleri 0 ise '-0').

Bu yöntem ile -32.767 ile +32.767 arasındaki sayıları temsil edebiliriz.

  • İkinci yöntem «2’ye göre tümleyen alma» yöntemini kullanmaktır (C dili de bu yöntemi kullanır).
  • Windows Hesap Makinesi’nin Programcı görünümünde bir sayı yazıp Not düğmesine tıkladığınızda değilini (tersini, 1’e göre tümleyenini) aldığını, işaret değiştiren ± düğmesine tıkladığınızda ise 2’ye göre tümleyenini aldığını gözlemleyebilirsiniz.
  • Örn: 10.000 ve -10.000 sayılarının hafızada (RAM) nasıl saklandığına Windows hesap makinesinin programcı görünümünde bakalım:

+10.000 = 0010 0111 0001 0000

-10.000 = 1101 1000 1111 0000

Bu yöntem ile -32.768 ile +32.767 arasındaki sayıları temsil edebiliriz.

Ondalıklı sayılar nasıl temsil edilir?

  • Ondalıklı sayılar bilgisayar biliminde kayan noktalı sayılar (floating point numbers) olarak ta bilinir. Bunun sebebini bir örnek ile açıklayabiliriz:
  • 123.4567 sayısı aşağıdaki şekillerde gösterilebilir:

   12.34567 x 101 = 1.234567 x 102 = 0.1234567 x 103

  • Görüldüğü gibi noktanın solunda sıfıra ulaşana kadar n basamak kaydırdığımızda sayının yanına x 10n eklenir. Bilgisayarda sadece 1234567 (mantis) ve n (üs) değerlerini tamsayı olarak saklamak yeterli olacaktır.
  • Eğer ondalıklı sayı 32 bit büyüklükte saklanacaksa 23 bit mantis için 8 bit üs için 1 bit ise işaret için kullanılır (64 bit için ise sırasıyla 52, 11, 1 şeklinde olacaktır).

ASCII (American Standard Code for Information Interchange)

  • Bilgisayarda metin türü verilerin işlenebilmesi veya saklanabilmesi için büyük ve küçük harflerin, noktalama işaretlerinin ve klavyedeki diğer yardımcı karakterlerin ikili kodlar ile ifade edilmesi gereklidir.
  • 50’li yıllarda her üretici firma farklı bir kodlama kullanırken, 1963 yılında yayınlanan ASCII standardı ile tüm bilgisayarların aynı kodlamayı kullanması sağlanmıştır. İlk etapta oluşturulan 7 bitlik kodlara sahip (128 farklı kod içeren) ASCII tablosuna, sonradan 1 bit daha ilave edilerek 256 kodluk «genişletilmiş ASCII tablosu» oluşturulmuştur.

Standart ASCII Tablosu

  • 128 kodun 33 tanesi ekrana basılmayan, 95 tanesi basılabilen karakterden oluşur.
  • 0-31 arasındaki sayılar, yazıcı gibi bazı çevresel aygıtlar için kullanılan denetim karakterlerine atanmıştır.
  • Örn: 12 (hex C) form besleme/yeni sayfa (FF: Form Feed) işlevine ayrılmıştır. Bu komut yazıcıya bir sonraki sayfanın başına atlama bilgisi verir.
  • Örn: ENTER tuşuna bastığımızda 10 (hex A) ve 13 (hex D) kodları üretilir. 10 satır başı (LF: Line Feed) 13 ise alt satır (CR: Carriage Return) karşılığıdır. İkisi de ekranda görünmez, alt satırın başına gitme işini gerçekleştirir.

Genişletilmiş (Extended) ASCII

  • Standart ASCII tablosu İngilizce için yeterli olsa da diğer dillerde olan bazı harfleri, matematiksel sembolleri ve tablo çizgileri oluşturan karakterler gibi özel simgeleri içermediği için bu tablo genişletilerek 256 koda çıkartılmıştır.
  • Örneğin â, ä, Ä, Ç, ç, Ö, ö, Ü, ü gibi harfler, π, a, b gibi matematiksel semboller, ╚, ╩, └, ┘, │ gibi kutu çizim simgeleri 128-255 aralığında (genişletilmiş kısımda) yer alır.

Unicode

  • 256 karakterlik ASCII kod tablosunda Yunan, Kiril, Arap ve Japon alfabesi gibi farklı alfabelere ait karakterlerin olmadığı (Türkçedeki Ş, ş, Ğ, ğ, İ ve ı karakterleri de yok) dikkatinizi çekmiştir.
  • 90’lı yıllara kadar bu afabelere özgü farklı yazı tipleri (font) geliştirilerek bu soruna çözüm bulunmuş, 1991 yılında yayınlanan ve her elemanın 16-bit bir kod ile temsil edildiği 65536 farklı eleman içerebilen Unicode (Universal Code: Evrensel Kod) ile tüm dillere ait karakterleri, matematiksel sembolleri, vs. içeren ortak bir kod tablosu oluşturulmuştur.

Veri Yapıları

  • Veri yapıları bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapılardır.
  • Karakter, Tamsayı ve Gerçel Sayı gibi değişkenler temel veri yapısı olarak kabul edilir.
  • Karakterler bir araya gelerek sözceleri (string), sayılar bir araya gelerek dizileri (array) oluşturur.
  • Seçilen veri yapısı algoritmanın doğru ve etkin çalışabilmesi için önemlidir.

Temel Veri Yapıları

  • Karakterler
  • ASCII Her karakter 8 bit (28 = 256 farklı karakter)
  • Unicode Her karakter 16 bit (216 = 65536 farklı karakter)

Tamsayılar

  • 8 bit char, byte
  • 16 bit short int, short, ShortInt, Int16
  • 32 bit int, integer, Int32
  • 64 bit long int, long, LongInt, Int64

Ondalıklı (Gerçel) Sayılar

  • 16 bit half (IEEE 754-2008)
  • 32 bit single, float
  • 64 bit double, real (Pascal)
  • 128 bit  quad

32 bit – 64 bit

  • Günümüzde birçok işletim sistemi ve programların 32 bit ve 64 bit olmak üzere iki farklı kurulum seçeneği vardır.
  • 64 bitlik işletim sistemleri sayesinde büyük sayılar üzerinde daha hızlı aritmetiksel işlem yapılabilir. 64-bit işletim sisteminin kurulacağı donanım da (özellikle CPU) 64-bit işlem yapabilme özelliğine sahip olmalıdır.
  • 64 bitlik bir işletim sistemi yüklü değilse bilgisayarınız 64 bitlik bir uygulama programını çalıştıramaz.
http://www.bulentkaraman.com/wp-content/uploads/2017/10/programlama1.jpghttp://www.bulentkaraman.com/wp-content/uploads/2017/10/programlama1-100x100.jpgBilgi BankasıBlogEğitim AkademisiYazılım Eğitimleri128 Bit,16 Bit,32 Bit,64 Bit,ASCII,Byte,GigaByte,Hexadecimal,Kodlama,MegaByte,Programlama,Sayı Sistemi,TeraByte,UnicodeKurumsal Çözümler | Bülent Karaman