KOD DERSLERİ

Sayı ve Kodlama Sistemleri

Bilgisayar bilimlerinde, sayılar ve kodlama sistemleri temel kavramlardır. Bilgisayarlar, verileri işlemek ve saklamak için sayısal sistemlere ihtiyaç duyarlar. Bu yazıda, sayı sistemleri ve kodlama sistemlerinin temellerini ele alacağız.

Sayı Sistemleri

Sayı sistemleri, sayıları temsil etmenin ve işlemenin farklı yollarını sunar. En yaygın kullanılan sayı sistemleri şunlardır:

İkilik Sistem (Binary)

İkili sayı sistemi, bilgisayarların temel çalışma prensibini oluşturan bir sayı sistemidir. Bu sistem sadece iki rakam kullanır: 0 ve 1. İkili sistem, dijital elektroniğin ve bilgisayar bilimlerinin dilidir, çünkü elektronik devreler iki durum arasında geçiş yapabilir: açık (1) ve kapalı (0).

İkili Sayı Sisteminin Temelleri

İkili sayı sistemi, pozisyonel bir sayı sistemidir, yani her rakamın değeri, pozisyonuna bağlıdır. En sağdaki rakam (en düşük konum) 2^0, bir sonraki rakam 2^1, bir sonraki 2^2, vb. şeklinde çarpanlarla çarpılır. Örneğin, 1010 ikili sayısını ele alalım:

1010 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0
= 1 * 8 + 0 * 4 + 1 * 2 + 0 * 1
= 8 + 0 + 2 + 0
= 10 (onluk sistemde)

İkili Sayıyı Onluk Sisteme Çevirme

Bir ikili sayıyı onluk sayıya çevirmek için, her rakamı kendi konum değerine göre 2'nin kuvvetiyle çarpıp, ardından bu değerleri toplarız. Aşağıda bir örnek daha verilmiştir:
İkili sayı: 1101

1101 = 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0
= 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1
= 8 + 4 + 0 + 1
= 13 (onluk sistemde)

Onluk Sistem (Decimal)

Günlük hayatta kullandığımız sistemdir. 0'dan 9'a kadar on rakam kullanır. Örneğin, 1234 sayısı onluk sistemdeki bir sayıdır.

Onluk Sayıyı İkili Sisteme Çevirme

Bir onluk sayıyı ikili sayıya çevirmek için, sayıyı 2'ye bölerek kalanları not ederiz. Bu işlemi, sayı 0 olana kadar devam ettiririz. Elde edilen kalıntıları tersten yazarak ikili sayı elde edilir. Örneğin, 19 sayısını ikili sisteme çevirelim:

19 / 2 = 9 kalan 1
9 / 2 = 4 kalan 1
4 / 2 = 2 kalan 0
2 / 2 = 1 kalan 0
1 / 2 = 0 kalan 1
Kalanları tersten yazarsak: 10011

Sekizlik Sistem (Octal)

Sekizlik sayı sistemi (Octal), bilgisayar bilimlerinde kullanılan bir başka pozisyonel sayı sistemidir. Bu sistem, 0'dan 7'ye kadar olan sekiz rakamı kullanır. Sekizlik sistem, özellikle ikili sayı sistemini daha kompakt ve okunabilir hale getirmek için kullanılır, çünkü her üç ikili basamak, bir sekizlik basamağa eşdeğerdir. Örneğin, ikili 110011 sayısı sekizlik sistemde 63 olarak temsil edilir. Bu sistem, özellikle eski bilgisayar sistemlerinde ve düşük seviyeli programlama dillerinde sıkça kullanılmıştır. Sekizlik sayı sisteminde sayıları onluk sisteme çevirmek, her basamağı 8'in kuvvetleriyle çarparak ve bu değerleri toplayarak yapılır. Aynı şekilde, onluk sayıları sekizlik sisteme çevirmek için, sayıyı 8'e bölerek kalanları not edip, bu kalanları tersten yazarak sekizlik sayı elde edilir. Bu özellikleriyle sekizlik sayı sistemi, dijital elektronik ve bilgisayar mühendisliğinde önemli bir rol oynar.

Onaltılık Sistem (Hexadecimal)

Onaltılık sayı sistemi (Hexadecimal), 0'dan 9'a kadar olan rakamlar ile A'dan F'ye kadar olan harfleri (A=10, B=11, C=12, D=13, E=14, F=15) kullanarak toplam 16 farklı sembolle sayıları temsil eden bir pozisyonel sayı sistemidir. Bilgisayar bilimlerinde yaygın olarak kullanılır, çünkü ikili sayıları daha okunabilir ve kompakt bir şekilde ifade etmeyi sağlar. Her dört ikili basamak, bir onaltılık basamağa eşdeğerdir. Örneğin, ikili 11110000 sayısı onaltılık sistemde F0 olarak temsil edilir. Onaltılık sistemde sayıları onluk sisteme çevirmek, her basamağı 16'nın kuvvetleriyle çarparak ve bu değerleri toplayarak yapılır. Aynı şekilde, onluk sayıları onaltılık sisteme çevirmek için, sayıyı 16'ya bölerek kalanları not ederiz ve bu kalanları tersten yazarak onaltılık sayı elde ederiz. Bu sistem, özellikle bilgisayar hafızası adresleme, renk kodlaması (örneğin, HTML renk kodları) ve düşük seviyeli programlama dillerinde önemli bir rol oynar.

Kodlama Sistemleri

Kodlama sistemleri, verilerin bilgisayarlar tarafından işlenebilir formata dönüştürülmesi için kullanılır. İşte bazı yaygın kodlama sistemleri:

ASCII (American Standard Code for Information Interchange)

ASCII (American Standard Code for Information Interchange), bilgisayarların ve diğer dijital cihazların metin tabanlı verileri temsil etmek ve iletmek için kullandığı bir karakter kodlama standardıdır. 1960'larda geliştirilmiş ve hızla yaygın bir standart haline gelmiştir. ASCII, her karakteri 7-bitlik bir ikili sayı ile temsil eder, bu da toplamda 128 farklı karakterin kodlanabileceği anlamına gelir.

ASCII karakter seti

ASCII karakter seti, çeşitli kategorilere ayrılmıştır:

ASCII Sistemi ASCII (American Standard Code for Information Interchange), bilgisayarların ve diğer dijital cihazların metin tabanlı verileri temsil etmek ve iletmek için kullandığı bir karakter kodlama standardıdır. 1960'larda geliştirilmiş ve hızla yaygın bir standart haline gelmiştir. ASCII, her karakteri 7-bitlik bir ikili sayı ile temsil eder, bu da toplamda 128 farklı karakterin kodlanabileceği anlamına gelir. ASCII Karakter Seti ASCII karakter seti, çeşitli kategorilere ayrılmıştır:

Kontrol Karakterleri (0-31 ve 127): Bu karakterler, yazıcılar ve diğer eski donanım cihazları için kontrol sinyalleri gönderir. Örneğin, 0 (NUL) boş karakteri ve 10 (LF) satır beslemesi anlamına gelir.

Yazdırılabilir Karakterler (32-126): Bu karakterler, ekranda veya yazıcıda görünebilen sembolleri içerir.

Boşluk (32): En temel yazdırılabilir karakterdir.

Sayılar (48-57): 0'dan 9'a kadar olan rakamlar.

Büyük Harfler (65-90): A'dan Z'ye kadar olan harfler.

Küçük Harfler (97-122): a'dan z'ye kadar olan harfler.

Diğer Semboller: Noktalama işaretleri ve çeşitli özel semboller (örneğin, 33 (!) ünlem işareti, 64 (@) at işareti).

ASCII'nin Önemi ve Kullanımı

ASCII, metin dosyalarının, e-postaların ve çeşitli veri formatlarının temelini oluşturur. Yazılım ve donanım geliştirmede, karakterlerin ve verilerin temsil edilmesinde büyük bir rol oynar. ASCII'nin basitliği ve yaygın kabulü, bilgisayarlar arasında veri iletimini ve işlenmesini standartlaştırarak, bilgi teknolojileri alanında büyük bir kolaylık sağlamıştır.

ASCII'nin Genişletilmiş Versiyonları

Orijinal 7-bit ASCII, sadece İngilizce karakter setini kapsar. Ancak, dünya genelinde farklı diller ve özel semboller için ihtiyaç duyulan karakterleri temsil etmek amacıyla çeşitli genişletilmiş ASCII versiyonları geliştirilmiştir. Bunlar genellikle 8-bit kullanarak 256 karaktere kadar destekler ve Latin-1, Windows-1252 gibi farklı karakter setlerini içerir.

Örnek ASCII Karakterleri

Orijinal 7-bit ASCII, sadece İngilizce karakter setini kapsar. Ancak, dünya genelinde farklı diller ve özel semboller için ihtiyaç duyulan karakterleri temsil etmek amacıyla çeşitli genişletilmiş ASCII versiyonları geliştirilmiştir. Bunlar genellikle 8-bit kullanarak 256 karaktere kadar destekler ve Latin-1, Windows-1252 gibi farklı karakter setlerini içerir.

Karakter ASCII Kodu İkili Karşılığı
A 65 01000001
a 97 01100001
0 48 00110000
! 33 00100001
Ayrıntılı ASCII Tablosu için tıklayın..

Unicode

Unicode, dünya genelindeki tüm yazı sistemlerindeki karakterleri kapsayan, evrensel bir karakter kodlama standardıdır. 1991'de geliştirilmeye başlanmış ve günümüzde internet, yazılım geliştirme ve veri işleme gibi birçok alanda yaygın olarak kullanılmaktadır. Unicode, karakterlerin ve sembollerin tutarlı bir şekilde temsil edilmesini ve işlenmesini sağlar, böylece farklı diller ve platformlar arasında uyumluluk ve veri bütünlüğü sağlanır.

Unicode'un Temel Özellikleri

Unicode, dünya genelindeki tüm yazı sistemlerindeki karakterleri kapsayan, evrensel bir karakter kodlama standardıdır. 1991'de geliştirilmeye başlanmış ve günümüzde internet, yazılım geliştirme ve veri işleme gibi birçok alanda yaygın olarak kullanılmaktadır. Unicode, karakterlerin ve sembollerin tutarlı bir şekilde temsil edilmesini ve işlenmesini sağlar, böylece farklı diller ve platformlar arasında uyumluluk ve veri bütünlüğü sağlanır.

UTF-8 (Unicode Transformation Format - 8 bit)

Evrensellik: Unicode, dünya genelindeki hemen hemen tüm dillerin ve yazı sistemlerinin karakterlerini kapsar. Bu, Latin alfabesi, Arap alfabesi, Kiril alfabesi, Çin karakterleri ve daha birçok yazı sistemi için geçerlidir.

Genişletilebilirlik: Unicode sürekli olarak güncellenir ve yeni karakterler eklenir. Bu sayede, yeni diller ve semboller Unicode standardına dahil edilebilir.

Birlikte Çalışabilirlik: Unicode, farklı platformlar ve uygulamalar arasında veri alışverişini kolaylaştırır. Aynı karakter seti kullanılarak, metin ve veri bütünlüğü korunur.

Unicode Karakter Seti

Unicode, her karaktere benzersiz bir kod noktası atar. Kod noktaları, "U+" ile başlayan ve ardından bir dizi onaltılık sayı ile temsil edilir. Örneğin, Latin harfi "A" için Unicode kod noktası "U+0041" dir. Unicode, farklı kodlama formatlarıyla kullanılabilir:

UTF-8: Değişken uzunluklu bir kodlama formatıdır. ASCII karakterleri için 1 byte, diğer karakterler için 2, 3 veya 4 byte kullanır. İnternet ve veri alışverişinde en yaygın kullanılan Unicode formatıdır.

UTF-16: Sabit veya değişken uzunluklu bir kodlama formatıdır. Temel Çokdillilik Düzlemi (BMP) içindeki karakterler için 2 byte, diğer karakterler için 4 byte kullanır.

UTF-32: Sabit uzunluklu bir kodlama formatıdır ve her karakteri 4 byte ile temsil eder. Bellek açısından daha az verimlidir ancak her karakterin aynı uzunlukta olması işlemleri basitleştirir.

Unicode ve UTF-8 Arasındaki İlişki

UTF-8, Unicode karakterlerinin 8-bitlik (1 byte) birimlerle kodlanmasını sağlayan bir formattır. ASCII karakterleriyle geriye dönük uyumludur, çünkü ASCII karakterleri UTF-8'de aynı şekilde temsil edilir. Bu nedenle, UTF-8 özellikle web ve internet tabanlı uygulamalarda yaygın olarak kullanılır. Örneğin, "Hello, 世界" (İngilizce ve Çince karakterlerin bir kombinasyonu) metni UTF-8'de şu şekilde kodlanır:

  • "H" -> 0x48
  • "e" -> 0x65
  • "l" -> 0x6C
  • "l" -> 0x6C
  • "o" -> 0x6F
  • "," -> 0x2C
  • " " (boşluk) -> 0x20
  • "世" -> 0xE4B896
  • "界" -> 0xE7958C

Unicode'un Önemi

UTF-8, Unicode karakterlerinin 8-bitlik (1 byte) birimlerle kodlanmasını sağlayan bir formattır. ASCII karakterleriyle geriye dönük uyumludur, çünkü ASCII karakterleri UTF-8'de aynı şekilde temsil edilir. Bu nedenle, UTF-8 özellikle web ve internet tabanlı uygulamalarda yaygın olarak kullanılır. Örneğin, "Hello, 世界" (İngilizce ve Çince karakterlerin bir kombinasyonu) metni UTF-8'de şu şekilde kodlanır:

Kodlama Sistemlerinin Önemi

Kodlama sistemleri, bilgisayarlar ve diğer dijital cihazlar arasında veri iletiminin ve depolamanın bel kemiğini oluşturur. Doğru bir kodlama sistemi kullanarak, veri kaybı olmadan ve dil bariyerlerini aşarak bilgi alışverişi yapılabilir. Örneğin, internet üzerindeki web sayfalarının çoğu UTF-8 kodlama sistemini kullanır, böylece farklı dillerdeki içerikler sorunsuzca görüntülenebilir ve işlenebilir.

Sayı ve Kodlama Sistemlerinin Uygulamaları

Veri İletişimi

İnternetteki veri iletimi, çeşitli kodlama sistemleri kullanılarak gerçekleştirilir. Örneğin, e-posta protokolleri ve web sayfaları, verilerin doğru bir şekilde iletilmesi için bu sistemlere güvenir.

Veri Depolama

Veri depolama, dijital bilgilerin uzun süreli olarak saklanması ve gerektiğinde erişilmesi için kullanılan yöntem ve teknolojileri ifade eder. Sayı ve kodlama sistemleri, verinin depolanma biçimini ve organizasyonunu belirleyerek bu süreçte temel bir rol oynar. Veriler, genellikle ikili (binary) formatta, yani 0 ve 1'lerden oluşan dijital kodlar şeklinde saklanır. Bu, verinin manyetik diskler, katı hâl sürücüler (SSD), optik diskler veya bulut depolama gibi çeşitli fiziksel ortamlar üzerinde depolanmasını sağlar. Depolama sistemleri, veri bütünlüğünü, erişim hızını ve güvenliğini sağlamak için farklı yapılandırmalar ve algoritmalar kullanır. Örneğin, RAID (Redundant Array of Independent Disks) teknolojisi, veri güvenliğini artırmak için birden fazla disk üzerinde veri yedeklemesi yapar. Kodlama sistemleri, veri sıkıştırma ve hata düzeltme algoritmalarıyla depolama verimliliğini ve güvenilirliğini artırır. Veri depolama, işletmelerin, bireylerin ve kurumların dijital dünyada bilgiyi güvenli ve verimli bir şekilde saklamasını sağlar, böylece veriye ihtiyaç duyulduğunda hızlı ve güvenli erişim imkânı sunar.

Kriptografi

Kriptografi, verilerin güvenli bir şekilde iletilmesi ve depolanmasını sağlamak için kullanılan teknik ve yöntemlerin bilimidir. Kriptografi, verileri şifreleyerek yetkisiz erişimi engeller ve sadece yetkili kişilerin bu verilere erişimini sağlar. Bu süreç, düz metnin (plain text) karmaşık bir algoritma kullanılarak şifreli metne (cipher text) dönüştürülmesini içerir ve sadece doğru anahtarla (key) bu şifreli metin tekrar düz metne dönüştürülebilir. Sayı ve kodlama sistemleri, bu şifreleme ve çözme işlemlerinin temelini oluşturur. Modern kriptografi teknikleri, hem simetrik anahtar algoritmalarını (AES, DES) hem de asimetrik anahtar algoritmalarını (RSA, ECC) içerir. Kriptografi, özellikle internet üzerinden güvenli veri iletimi (örneğin, HTTPS), elektronik ticaret, dijital imzalar ve kimlik doğrulama gibi alanlarda kritik bir rol oynar. Bu sayede, kullanıcıların gizliliği ve veri bütünlüğü korunur.

Programlama

Yazılım geliştirme süreçlerinde, sayılar ve kodlama sistemleri büyük önem taşır. Programcılar, farklı veri türlerini işlemek ve manipüle etmek için bu sistemleri kullanır.

Sayılar ve kodlama sistemleri, bilgisayar bilimlerinin temel taşlarını oluşturur. İkilik, onluk, sekizlik ve onaltılık gibi sayı sistemleri ile ASCII, Unicode ve UTF-8 gibi kodlama sistemleri, bilgisayarların ve dijital cihazların veri işleme ve iletim süreçlerinde hayati öneme sahiptir. Bu temel kavramları anlamak, bilgisayar bilimlerinde ilerlemek ve teknolojiyi daha iyi kavramak için gereklidir. Bu sistemler, verilerin doğru, güvenli ve etkili bir şekilde işlenmesini ve iletilmesini sağlar, bu da modern dijital dünyamızın temelini oluşturur.