BİLGİSAYAR PROGRAMLAMA Ders 1 (2): Sayı ve Kodlama Sistemleri

Slides:



Advertisements
Benzer bir sunumlar
Bilgi Teknolojisinin Temel Kavramları
Advertisements

BİLGİSAYAR KULLANIMI KURSU
Değişken , Veri Türleri ve Operatörler
Dijital Dünyada Yaşamak
Bilgi Teknolojisinin Temel Kavramları
KAPASİTE (HAFIZA) ÖLÇÜ BİRİMLERİ
BLG 201 ŞAHİN AKDAĞ.
TEMEL C PROGRAMLAMA DERSİ - 1
Bölüm 2 C Dilinin Temelleri
Bilgisayar Yapısı-Genel
Selçuk Üniversitesi’nin Bilişime Gönül Veren Gençleri
VERİ TİPLERİ VE DEĞİŞKENLER
OOP4 LAB.
Sayı Sistemleri Yrd. Doç. Dr. Oğuz ÇETİN.
Bilgisayarın İçinde/Dışında VERİ TANIMLAMASI
Programlamanın Yapı Taşları
BDEM 105.
-2V +2V ab 0 255= bitlik hasssasiyet a: Analog, b: Dijital a=-0.45 ise b= →b= ADC (Analog to Digital Conversion):
CEIT 101 Teorik Emrah Soykan - Konu 2 -.
CEIT 101 Teorik Vasfi Tuğun - Konu 2 -.
BİLGİSAYAR ORGANİZASYONU
CSS Birimleri.
Bilgisayarlarda Bilgi Nasıl İfade Edilir?
Veri Yapıları Ve Algoritmalar
1. Formül Kullanma Kuralları
BGK207 Bilgisayar I EN101, EN201 Temel Bilgi Tek. Kul. I Öğr. Gör. Mustafa AÇIKKAR.
66 CHAPTER SİSTEM UNITESİ. © 2005 The McGraw-Hill Companies, Inc. All Rights Reserved. 6-2 Sistem Üniteleri Mikro bilgisayarlar Masaüstü Dizüstü Tablet.
BİLGİSAYARIN MİMARİSİ, TEMEL BİLEŞENLERİ VE ÇALIŞMA MANTIĞI
Bölüm 1: SAYISAL HESABIN NİTELİKLERİ
KAPASİTE (HAFIZA) ÖLÇÜ BİRİMLERİ
DİJİTAL ÖLÇÜ BİRİMLERİ
DEĞİŞKENLER VE VERİ TİPLERİ
DİJİTAL ÖLÇÜLER.
Veri Yapıları Yrd. Doç. Dr. Altan MESUT.
DİJİTAL ÖLÇÜLER.
DİJİTAL ÖLÇÜ BİRİMLERİ
INTERNET TABANLI PROGRAMLAMA
WEB PROGRAMLAMA PHP Temelleri Dr. Erman Yükseltürk.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Dersin Kapsamı Bilgisayar Nedir, Ne Yapar?
Bilgisayarlarda Bilgi Saklama Kapı Devreleri Flip-Flop Devreleri
Temel Giriş/Çıkış Fonksiyonları
Mikroişlemciler Sayı gösterimleri.
C# Veri Tipleri ve Değişkenler
DENETİM MASASI Ayarlar: Ayarlar için, Başlat menüsündeki ayarlar seçeneği kullanılır. Bilgisayara ilişkin birçok ayar seçeneği Denetim Masasında yer alır.
VERİ TİPLERİ VE DEĞİŞKENLER
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 8.  Tamsayı Değerler (Integer) Tamsayılar, 10 tabanlı (decimal), 8 tabanlı (octal) veya 16 tabanlı (hexadecimal)
Temel Bilgi Teknolojileri
Bilgisayarda ölçü birimleri
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Chapter 14: Files and Streams. 2Microsoft Visual C# 2012, Fifth Edition Dosyalar, Dosya Ve dizin Sınıfları Geçici Depolama – Genellikle bilgisayar belleği.
Veri Yapıları.
Sayı Sistemleri Geçen Hafta Analog ve Sayısal Büyüklük Kavramı
Sayı Sistemleri Geçen Hafta Kayan Noktalı Sayılar
ANALOG-SAYISAL BÜYÜKLÜK VE SAYI SİSTEMLERİ
Kodlama ve Kodlar Sakarya Üniversitesi Teknoloji fakültesi.
SAYI SİSTEMLERİ-HESAPLAMALAR
Information Technology, the Internet, and You © 2013 The McGraw-Hill Companies, Inc. All rights reserved.Computing Essentials 2013.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
7. HAFTA.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
Bilgisayar Mühendisliğine Giriş
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
Bilgisayar Mühendisliğine Giriş
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ Sayı ve Kodlama Sistemleri
Sunum transkripti:

BİLGİSAYAR PROGRAMLAMA Ders 1 (2): Sayı ve Kodlama Sistemleri

Bit, Byte, KiloByte, MegaByte, … Bilgisayar elektronik bir cihaz olduğu için elektrik akımının geçirilmesi (1) yada geçirilmemesi (0) durumlarını işleyebilir. Bu nedenle ikili sayı sistemini temel alarak veri işler ve saklarlar. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit’tir. 1 Bayt (Byte) = 8 Bit 1024 Byte = 1 KiloByte (KB) 1024 KB = 1 MegaByte (MB) 1024 MB = 1 GigaByte (GB) 1024 GB = 1 TeraByte (TB) Saklama birimlerini üreten donanım üreticileri gerçekteki durumu (103), işletim sistemi ise bilgisayardaki durumu (210) baz aldığı için bir veri saklama donanımının üzerinde yazan kapasitesi ile bilgisayarda görünen kapasitesi farklı olabilir. Örn: 16 GB bir hafıza kartının kapasitesi bilgisayarda 16.000.000.000 / 230 = 14,9 GB görünebilir. Neden 1000 değil de 1024 ? Bilgisayar 2’li sayı sistemine göre çalıştığı için 103 değil 210 temel alınır.

İ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 Örn: (10110100)2 = (?)10 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 180 Birkaç soru daha çözülebilir (yada ders sonunda zaman kalırsa örnek çözülür). Windows 7 veya 8’de hesap makinesi Programcı görünümünde (Alt+3) çalıştırılarak sayı dönüşümleri için örnekler yapabiliriz. 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). Decimal Hexadecimal Binary 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Decimal Hexadecimal Binary 8 1000 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111 16’lı sayı sistemi ile 10’lu ve 2’li arasında dönüşüm örnekleri çözülebilir (yada ders sonunda).

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 İkili sayı sisteminde gösterdiğimiz gibi «bölme – kalan» yöntemini tüm sayı sistemleri için kullanarak bu örneği tahtada çözelim. 3 1 C 8

32 bit ile 232-1 = 4.294.967.295’ e kadar sayıları temsil edebiliriz. 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 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'). 1 ise – 0 ise + Kalan 15 bit ile 32.768 (215) sayı temsil edilebilir Bu yöntem ile -32.767 ile +32.767 arasındaki sayıları temsil edebiliriz.

Negatif sayılar nasıl temsil edilir? İ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). Bak: Temel Veri Yapıları ku

BCD (Binary Coded Decimal) Ondalık sayı sistemindeki sayıların her basamağının 4 bit olarak kodlanmasıdır. Örn: 4859 sayısının BCD karşılığı nedir? 0100 1000 0101 1001 BCD kullanıldığında 16 bit ile temsil edilebilecek en büyük sayı 9999’dur. Normalde 16 bit ile 216 farklı sayının (65535’e kadar) temsil edilebileceğini biliyoruz. BCD 4 bit ile temsil edilebilecek 16 farklı durumdan 10 tanesini kullanabildiği için böyle bir kayıba neden olmaktadır. 4 8 5 9

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. Word veya PowerPoint altında Ekle + Simge dediğimizde çıkan «simge ekleme» penceresinden sembollerin ASCII ve Unicode kodları görünmekte. 0-31 arası ve 127 kodlu (DEL) elemanların listede olmadığı öğrenciye gösterilebilir.

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, π, ,  gibi matematiksel semboller, ╚, ╩, └, ┘, │ gibi kutu çizim simgeleri 128-255 aralığında (genişletilmiş kısımda) yer alır. Örn: Yandaki tablo karakterler ile çizilmiştir Tablo çizimini kapsayan sağ alt köşedeki metin kutusunun boyutlarını değiştirerek, tablonun nasıl bozulduğunu gösterebilirsiniz. Böylece tablonun karakterler ile üretildiği daha net görülür. ╔═══╦═══╦═══╗╟───╫───╢ ║ ╠═══╬═══╣ ║ ╚═══╩═══╩═══╝

0-127 Standart 128-255 Genişletilmiş Türkçedeki Ğ, ğ, Ş, ş, İ ve ı karakterleri genişletilmiş kısımda da yer almamaktadır. Bu karakterler bu nedenle bazı yazı tiplerinde düzgün görüntülenemezler. Bak: iki slayt sonra Simge Ekleme.

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.

MS Office Word ve Powerpoint’te Ekle sekmesinden Simge eklemeyi seçtiğinizde Arial, Calibri, Times New Roman gibi bazı yazı tipleri için Alt Küme seçeneğini görebilirsiniz. Eğer alttaki yeri kısmından Unicode yerine ASCII ya da Türkçe seçerseniz Alt Küme seçimi kaybolacaktır (Arap alfabesine ait karakterleri artık göremeyeceksiniz). Türkçe seçtiğinizde Ş, ş, Ğ, ğ, İ ve ı harflerinin karakter kodlarını görebilecek, ASCII seçtiğinizde ise o kodlarda başka karakterler göreceksiniz (ASCII tablosundaki bazı kodların dile özgü olarak farklı hale getirilmesine örnektir). Symbol, Wingdings gibi bazı yazı tiplerinde Alt Küme seçeneği yoktur. Yeri kısmında sadece Simge yazar (ASCII, Unicode yok). Bazı metinlerde ve e-postalarda 222 kodlu Ş yerine Þ, 254 kodlu ş yerine þ, vs. görüntülenmesinin nedeni bu slaytta açıklanabilir.

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.

Veri Yapısı ve Bilgi 0100 0010 0100 0001 0100 0010 0100 0001 Yukarıdaki bit dizisi; Karakter dizisi (string) ise (ASCII): B A B A BCD (Binary Coded Decimal) ise: 4 2 4 1 4 2 4 1 16-bit tam sayı ise: 16961 16961 32-bit tam sayı ise: 1111573057 32-bit gerçel sayı ise: 0.4276801x1066 4 2 4 1 4 2 4 1

Temel Veri Yapıları Karakterler Tamsayılar Ondalıklı (Gerçel) Sayılar 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 Burada verilen veri tipleri tek bir dil için verilmemiştir. Altı çizili olanlar C dili için geçerli olanlardır.

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. 2^10 = 1024 > 1000 olduğuna göre öğrenci bu büyüklükler için kafadan şu hesabı yapabilmeli: 20 bit > 1 milyon 30 bit > 1 milyar … 32 bit > 4 milyar 40 bit > 1 trilyon 50 bit > 1000^5 60 bit > 1000^6 … 64 bit > 16*(1000^6)

Diziler String: Karakter dizileri (Sözce) Array: Sayı dizileri Karakter sayısının tutulması (PASCAL) [ 6, t, r, a, k, y, a ] Sonlandırma karakterinin (\0) kullanılması (C) [ t, r, a, k, y, a, \0 ] Array: Sayı dizileri Tek boyutlu, İki boyutlu (matris), Çok boyutlu