Kısım I · Makine · Bölüm 2
Bit ve Byte
Her şey sayıdır (Bits, bytes and representation)
Neden burada: Kat planının zemininde (Kat 0) elektrik var ve elektrik bir telden yalnızca iki şey söyleyebilir: akım var ya da yok. Bu bölüm, o kadar fakir bir alfabeyle nasıl sayı, harf, Türkçe karakter, emoji, renk, fotoğraf, ses ve video yazıldığını gösterir. Yukarıdaki bütün katlar, burada kurulan alfabeyle konuşur.
Neye dayanıyor: Bölüm 1: girdi–işlem–çıktı, kat planı ve özellikle soyutlama (1.4). Bu bölümde soyutlamanın ilk somut örneğini göreceksin: sıfırlar ve birler, bir kural sayesinde "harf" olur.
- Kat 2–10Devreler, işlemci, diller, işletim sistemi, web, uygulamaHepsi bu bölümde kurulan alfabeyi kullanır.
- Kat 1Transistör ve mantık kapılarıBitleri açıp kapayan anahtarlar. Bölüm 3.
- Kat 0Elektrik ve bitVar ya da yok, 1 ya da 0.
Bu bölümde dört şey kuracağız. Önce sayıları yalnızca 0 ve 1 ile yazmayı (ikilik sistem). Sonra bu rakamların birimlerini: bit, byte, kilobyte. Sonra en önemli fikri: sayılar bir kodlama kuralıyla harfe, renge, sese dönüşür. Son olarak da şu ince ama hayati noktayı: aynı bitler, hangi kuralla okunduklarına göre bambaşka anlamlara gelir.
2.1 Sayı sistemleri: birli, onluk, ikilik
CS50 bu konuya bir sınıfta yoklama almakla başlar.1 Parmaklarınla sayarsan her parmak bir kişidir: bir parmak bir, iki parmak iki. Her işaretin aynı değerde olduğu bu sisteme birli sistem (unary, base-1) denir. Mahkûmların duvara çizdiği çentikler de böyledir. Basittir ama verimsizdir: on parmakla en fazla ona kadar sayabilirsin.
Onluk sistem ve basamak değeri
Günlük hayatta kullandığımız onluk sistem (decimal, base-10) çok daha akıllıcadır, çünkü bir rakamın değeri yalnızca kendisine değil, bulunduğu yere de bağlıdır. Buna basamak değeri (place value) denir. 123 sayısında:
| Yüzler (10²) | Onlar (10¹) | Birler (10⁰) |
|---|---|---|
| 1 | 2 | 3 |
yani 1 × 100 + 2 × 10 + 3 × 1 = 123. Onluk sistemde on farklı rakam (0–9) vardır ve her basamak, sağındakinin on katı değerindedir. Bunu ilkokulda öğrendin; o kadar alıştın ki bir sistem olduğunu fark etmiyorsun. Bilgisayarı anlamanın ilk adımı, bu sistemin tek mümkün sistem olmadığını görmek.
İkilik sistem
Bilgisayarlar ikilik sistem (binary, base-2) kullanır.1 Mantık tamamen aynıdır, yalnızca iki farklı rakam (0 ve 1) vardır ve her basamak sağındakinin iki katı değerindedir. Basamak değerleri sağdan sola 1, 2, 4, 8, 16, 32, 64, 128… diye gider.
CS50'nin örneği üç ampuldür. Her ampul bir basamaktır; yanıyorsa 1, sönükse 0:1
| 4'ler (2²) | 2'ler (2¹) | 1'ler (2⁰) | Onluk değer |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 2 |
| 0 | 1 | 1 | 3 (2 + 1) |
| 1 | 0 | 0 | 4 |
| 1 | 0 | 1 | 5 (4 + 1) |
| 1 | 1 | 0 | 6 (4 + 2) |
| 1 | 1 | 1 | 7 (4 + 2 + 1) |
İkilik bir sayıyı onluğa çevirmek için yapacağın tek şey: 1 olan basamakların değerlerini toplamak. Üç ampulle 0'dan 7'ye kadar sekiz farklı sayı yazılabilir. 8'i yazmak için dördüncü bir ampul (8'ler basamağı) gerekir: 1000.
İkilik 10 "on" değildir, "iki"dir (bir tane 2, sıfır tane 1). İkilik 100 ise "dört"tür. Rakamlar aynı görünür ama okuma kuralı farklıdır. Bu, bölümün sonunda (2.8) varacağımız büyük fikrin ilk küçük örneği: bir işaretin anlamı, onu okuduğun kurala bağlıdır.
Neden iki? Neden on değil?
Çünkü bilgisayarın temelindeki parça, bir sonraki bölümde göreceğin transistör, bir anahtardır: açık ya da kapalı. Bir telde akımın "var" ya da "yok" olduğunu ayırt etmek kolay ve güvenilirdir. On farklı gerilim seviyesini birbirinden şaşmadan ayırt etmek ise çok daha zor, pahalı ve hataya açık olurdu. CS50'nin deyişiyle: bilgisayarlar milyonlarca, milyarlarca transistörün açılıp kapanmasıdır; 1 açık, 0 kapalı demektir.1 İkilik sistem, bu fiziksel gerçeğin matematikteki karşılığıdır.
2.2 Bit: bilginin en küçük birimi
İkilik sistemdeki tek bir basamağa, yani tek bir 0 ya da 1'e bit denir. Kelime İngilizce binary digit (ikilik rakam) ifadesinden gelir.1 Bit, bilginin bölünemeyen en küçük birimidir: tek bir evet/hayır sorusunun cevabı. Kullanıcı bu soruyu doğru mu cevapladı? Ses açık mı? Karanlık mod etkin mi? Her biri bir bitle yazılabilir.
Bitlerin gücü bir araya geldiklerinde ortaya çıkar. Her yeni bit, mümkün durumların sayısını ikiye katlar:
- 1 bit: 2 durum (0, 1)
- 2 bit: 4 durum (00, 01, 10, 11)
- 3 bit: 8 durum (yukarıdaki tablo)
- n bit: 2n durum2
Bu katlanma çok hızlı büyür. 10 bit 1.024 durum, 20 bit bir milyonu aşkın, 32 bit dört milyarı aşkın durum demektir. Bölüm 1'deki telefon rehberinde "ortadan böl" yönteminin 1.000 sayfayı yaklaşık 10 adımda bitirmesi tesadüf değil: aynı hesabın tersi. Her adım bir evet/hayır sorusuydu ("solda mı, sağda mı?"), yani bir bit; 10 bitlik soru, 1.024 sayfa arasından birini seçmeye yeter.
2.3 Byte ve büyük birimler
Bilgisayarlar bitleri genellikle tek tek değil, sekizli gruplar halinde işler. Sekiz bitlik gruba byte denir.1 Sekiz bitin basamak değerleri şunlardır:
Yukarıdaki byte 00000101, yani 4 + 1 = 5'tir. Bütün bitler 0 olursa 0, hepsi 1 olursa 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 olur.1 Demek ki bir byte 256 farklı değer (0'dan 255'e) taşıyabilir. Bu "255" sayısını aklında tut; az sonra renklerde karşına çıkacak.
Kilo, mega, giga: 1000 mi, 1024 mü?
Byte'lar da büyük sayılarla ölçülür: kilobyte (KB), megabyte (MB), gigabyte (GB), terabyte (TB). Burada küçük ama gerçek bir karışıklık var ve bilmen işine yarar.
Gündelik hayatta "kilo" 1.000 demektir (kilogram = 1.000 gram). Ama bilgisayarlar ikilik çalıştığı için, 1.000'e en yakın "yuvarlak" ikilik sayı 2¹⁰ = 1.024'tür ve tarihsel olarak 1 kilobyte = 1.024 byte kabul edilmiştir.2 Sonuç: aynı kelime iki farklı miktar için kullanıldı.
- Onluk ölçü: 1 GB = 1.000.000.000 byte. Disk ve telefon üreticileri kutunun üstüne kapasiteyi böyle yazar.3
- İkilik ölçü: 1 GB = 1.073.741.824 byte (2³⁰). Bazı işletim sistemleri ve uygulamalar boyutu böyle gösterir.3 Karışıklığı gidermek için bu ölçüye ayrı isimler önerildi: kibibyte (KiB), mebibyte (MiB), gibibyte (GiB). Belgelerde bu isimleri görürsen, 1.024 tabanlı ölçü kastediliyor demektir.
Bu yüzden "1 TB" diye satılan bir disk, ikilik ölçü kullanan bir bilgisayarda yaklaşık 931 "GB" görünür: hiçbir şey kaybolmadı, yalnızca iki farklı cetvel kullanıldı. Apple'ın açıklamasına göre macOS ve iOS da eskiden ikilik ölçüyle gösterirken, OS X Leopard ve iOS 10'dan sonraki sürümlerde onluk ölçüye geçmiştir.3
Bir de hızlarda bir tuzak: internet hızları genellikle bit cinsinden verilir (megabit/saniye, Mbps), dosya boyutları ise byte cinsinden. 100 Mbps'lik bir bağlantı saniyede en fazla yaklaşık 100 ÷ 8 = 12,5 megabyte taşır.2 Kısaltmada küçük b bit, büyük B byte demektir.
2.4 Onaltılık sistem: byte'ları okumanın kısa yolu
Uzun bit dizilerini okumak insan için yorucudur: 11111111 mi 11111110 mı, göz kolayca kaçırır. Programcılar bu yüzden çoğu zaman onaltılık sistem (hexadecimal, base-16) kullanır. Mantık yine aynı, yalnızca on altı farklı rakam var: 0–9'dan sonra A (10), B (11), C (12), D (13), E (14), F (15). Her basamak sağındakinin on altı katıdır.
Onaltılığın sihri şudur: 16 = 2⁴ olduğu için, tek bir onaltılık rakam tam olarak 4 biti, iki onaltılık rakam da tam olarak bir byte'ı gösterir. Yani çeviri, büyük bir hesap gerektirmez; bitleri dörderli gruplara ayırıp her grubu bir rakamla yazmak yeter:
| İkilik | Onaltılık | Onluk |
|---|---|---|
0000 0000 | 00 | 0 |
0000 1010 | 0A | 10 |
0100 1000 | 48 | 72 |
1111 1111 | FF | 255 |
Programcılar bir sayının onaltılık olduğunu belirtmek için önüne genellikle 0x koyar: 0x48, onluk 72 demektir, "kırk sekiz" değil. Yine aynı ders: işareti okumadan önce kuralı bil.
Prototipinin CSS dosyasında color: #FF0000; gibi bir satır gördüysen, o bir onaltılık sayıdır, daha doğrusu art arda üç byte'tır: FF kırmızı, 00 yeşil, 00 mavi. Yani "kırmızıyı sonuna kadar aç, diğer ikisini kapat." Bunun neden üç byte olduğunu 2.6'da göreceğiz.
2.5 Harfleri sayıya çevirmek: ASCII, Unicode, UTF-8
Buraya kadar bitlerle yalnızca sayı yazdık. Peki "Kerem" kelimesi bellekte nasıl durur? Cevap: bir anlaşmayla. Herkesin kabul ettiği bir tabloda her harfe bir sayı karşılık getirilir; harf saklanacağı zaman onun sayısı saklanır. Harfleri sayılara, sayıları bitlere çeviren bu kurallar bütününe kodlama (encoding) denir.
ASCII
İlk yaygın anlaşma 1960'larda Amerika'da ortaya çıkan ASCII'dir (American Standard Code for Information Interchange). ASCII 7 bit kullanır, yani 128 karakter tanımlar (0–127): İngiliz alfabesinin büyük ve küçük harfleri, rakamlar, noktalama işaretleri ve ekranda görünmeyen bazı kontrol karakterleri (satır sonu gibi).12 Birkaç örnek:
| Karakter | Onluk | İkilik | Onaltılık |
|---|---|---|---|
A | 65 | 01000001 | 41 |
a | 97 | 01100001 | 61 |
0 (rakam olarak sıfır karakteri) | 48 | 00110000 | 30 |
H | 72 | 01001000 | 48 |
I | 73 | 01001001 | 49 |
! | 33 | 00100001 | 21 |
CS50'nin örneğinde telefonuna bir mesaj gelir ve altındaki bitler 72, 73, 33 sayılarını gösterir. ASCII tablosuna bakınca: HI!1 İki şeye dikkat et. Birincisi, "0" karakteri ile 0 sayısı farklı şeylerdir: ekranda gördüğün "0" işareti ASCII'de 48 sayısıyla saklanır. İkincisi, büyük ve küçük harfler ayrı karakterlerdir (A = 65, a = 97); bu yüzden bilgisayar "Kerem" ile "kerem"i varsayılan olarak farklı görür. Kullanıcı adı karşılaştırırken bunu unutan programlar hata verir.
ASCII'nin büyük eksiği belli: ş, ğ, ı, İ, ç, ö, ü yok. Arapça, Çince, Yunanca yok. 128 yer, dünyanın yazı sistemleri için çok azdır. Bir dönem her ülke kalan boşlukları kendine göre doldurdu (Türkçe için ayrı, Yunanca için ayrı tablolar); aynı sayı bir tabloda ş, diğerinde başka bir harf demekti ve dosyalar ülkeler arasında bozuluyordu.
Unicode
Çözüm Unicode oldu: dünyadaki bütün yazı sistemlerinin bütün karakterlerine, tek bir ortak listede, tek bir numara verme girişimi.4 Unicode'da bir karakterin numarasına kod noktası (code point) denir ve U+ önekiyle, onaltılık yazılır:
| Karakter | Kod noktası | Açıklama |
|---|---|---|
A | U+0041 | ASCII'deki 65 ile aynı (0x41 = 65) |
ş | U+015F | Latin küçük s, çengelli |
ı | U+0131 | Noktasız küçük i |
İ | U+0130 | Noktalı büyük I |
€ | U+20AC | Euro işareti |
| 😀 | U+1F600 | Gülen yüz emojisi |
Unicode 18.0 sürümü itibarıyla 172.808 karakter tanımlıdır ve her sürümle yenileri eklenir; emojiler de bu listenin parçasıdır.5 CS50'nin belirttiği ince bir nokta: Unicode bir emojinin numarasını standartlaştırır, çizimini değil. Bu yüzden aynı 😀 bir iPhone'da ve bir Android'de biraz farklı görünür: numara aynı, çizim her üreticinin kendi yazı tipine kalmış.1 Soyutlama yine karşımızda: kod noktası arayüz, çizim gerçekleme.
UTF-8: kod noktalarını byte'a dökmek
Unicode her karaktere bir numara verir, ama o numaranın bellekte hangi byte'larla yazılacağını ayrı bir kural belirler. Bugün web'in ve neredeyse bütün modern sistemlerin kullandığı kural UTF-8'dir. UTF-8'in iki akıllıca özelliği vardır:6
- Değişken uzunluk: Her karakter 1 ile 4 byte arasında yer kaplar. Sık kullanılan karakterler az, nadir olanlar çok yer tutar.
- ASCII uyumu: İlk 128 karakter, ASCII ile birebir aynıdır ve tek byte tutar. Yani eski ASCII metinler, hiç değiştirilmeden geçerli UTF-8 metinlerdir.
| Karakter | UTF-8 byte'ları (onaltılık) | Byte sayısı |
|---|---|---|
A | 41 | 1 |
ş | C5 9F | 2 |
ı | C4 B1 | 2 |
€ | E2 82 AC | 3 |
| 😀 | F0 9F 98 80 | 4 |
Pratik bir sonuç: Türkçe bir metin, aynı uzunluktaki İngilizce metinden biraz daha fazla byte tutar, çünkü ş, ğ, ı, İ, ç, ö, ü ikişer byte'tır. "Karakter sayısı" ile "byte sayısı" bu yüzden farklı şeylerdir; bir veritabanı alanının sınırını belirlerken ya da bir mesajın boyutunu hesaplarken bu fark önem kazanır.
Kural yanlış olunca: bozuk karakterler
Bir program UTF-8 ile yazılmış bir metni başka bir kodlamayla okursa ne olur? Byte'lar aynıdır ama okuma kuralı yanlıştır. Örneğin ş harfinin iki byte'ı (C5 9F), eski Batı Avrupa kodlamalarından biriyle (Windows-1252) okunursa iki ayrı karakter gibi görünür: ÅŸ. "Kerem şık" metni ekranda "Kerem şık" olarak belirir. Türkçe bir sitede bu tür garip karakterler gördüysen, sebebi budur: bitler sağlam, kural yanlış.
Prototipindeki index.html dosyasının <head> kısmında muhtemelen şu satır var:
<meta charset="utf-8">
Artık ne dediğini okuyabilirsin: "Tarayıcı, bu dosyadaki byte'ları UTF-8 kuralıyla harfe çevir." Bu satır olmasa ya da dosya başka bir kodlamayla kaydedilmiş olsa, "Hukuka Giriş" başlığındaki ş ve İ bozulabilirdi. Hukuk uygulaması Türkçe olduğu için bu satır bizim için süs değil, zorunluluk.
2.6 Renk ve görüntü: RGB ve piksel
Bitlerle renk nasıl yazılır? Yine bir anlaşmayla. Ekranındaki her nokta, kırmızı, yeşil ve mavi ışığın karışımıyla oluşur. Her rengin ne kadar yanacağını bir sayıyla söylersen, bir rengi üç sayıyla tarif etmiş olursun. Bu modele RGB (Red, Green, Blue) denir. Her bileşen genellikle bir byte'tır, yani 0 (hiç) ile 255 (tam) arasında bir değer alır.1
rgb(255, 0, 0)=#FF0000: saf kırmızırgb(0, 0, 0)=#000000: siyah (hiç ışık yok)rgb(255, 255, 255)=#FFFFFF: beyaz (üç ışık da tam)
Her bileşen 256 değer alabildiğine göre, üç byte ile 256 × 256 × 256 = 16.777.216 farklı renk yazılabilir. CSS'te bir rengi rgb(…) ile ya da # ile başlayan altı onaltılık rakamla yazmak, aynı üç byte'ı iki farklı biçimde yazmaktır.
Bir dijital görüntü, bu renkli noktaların bir ızgarasıdır. Her noktaya piksel (pixel, picture element) denir; ızgaranın genişlik ve yüksekliğine çözünürlük (resolution).1 1920 × 1080 çözünürlüklü bir ekranda 2.073.600 piksel vardır. Her piksel 3 byte ise, tek bir ekran görüntüsü ham haliyle yaklaşık 6,2 milyon byte (yaklaşık 6 MB) eder.
2.7 Ses ve video: örnekleme ve sıkıştırma
CS50 videoyu bir çocuk kitabının köşesindeki çevir-oynat resimlere (flipbook) benzetir: art arda gösterilen bir dizi görüntü.1 Her görüntüye kare (frame) denir. Saniyede 30 kare gösterilen bir video, 1920 × 1080 çözünürlükte, ham haliyle saniyede 6,2 MB × 30 ≈ 187 MB tutardı. Bir saatlik film yüzlerce gigabyte olurdu.
Ses de sayılara benzer bir yolla çevrilir. Ses, havadaki basıncın sürekli dalgalanmasıdır. Mikrofon bu dalgalanmayı ölçer; bilgisayar da bu ölçümü çok kısa aralıklarla bir sayı olarak kaydeder. Bu işleme örnekleme (sampling) denir. Müzik CD'si standardı saniyede 44.100 örnek alır ve her örneği 16 bitle kaydeder, iki kanal (stereo) için.7 Hesap: 44.100 × 2 byte × 2 kanal = saniyede 176.400 byte, dakikada yaklaşık 10,6 MB.
Bu rakamlar bize günlük hayatta neden bu kadar büyük dosyalarla karşılaşmadığımızı sorduruyor. Cevap sıkıştırma (compression): veriyi daha az bitle yazmanın yolları. Kabaca iki türü var:
- Kayıpsız (lossless): Tekrarları kısaltır, açıldığında birebir aynı veri geri gelir. Örnek: ZIP dosyaları, PNG resimleri. "Aynı mavi pikselden 500 tane" demek, 500 kez mavi yazmaktan kısadır.
- Kayıplı (lossy): İnsan gözünün ve kulağının fark etmeyeceği ayrıntıları atar. Örnek: JPEG fotoğraflar, MP3 ve AAC müzik, akış (streaming) videoları. Geri açıldığında veri birebir aynı değildir ama yeterince benzerdir.
Sıkıştırmanın ayrıntıları bu kitabın konusu değil. Bilmen gereken: ses, görüntü ve video da sonunda byte'tır ve boyutları yazılımın hızını, maliyetini ve tasarımını doğrudan etkiler.
2.8 Anlam bağlamdadır
Bölümün en önemli fikrine geldik. CS50'nin örneğini birleştirelim: 72, 73, 33 sayıları ASCII ile okunursa HI! olur. Aynı üç sayı RGB olarak okunursa, yani 72 kırmızı, 73 yeşil, 33 mavi diye, koyu, zeytine çalan bir sarı tonunda tek bir piksel olur.1 Bellekteki bitler birebir aynı:
01001000 01001001 00100001
Bu bitler kendi başlarına "harf" ya da "renk" değildir. Hiçbir şey değildir. Anlamı, onları okuyan programın hangi kuralı uyguladığı belirler. Bitlerin kendisinde "ben bir harfim" yazmaz.
Hukuk okumuş biri için bu tanıdık bir fikir olmalı: aynı kelime, farklı bir kanunun bağlamında farklı bir anlama gelebilir; metni okumadan önce hangi kuralın uygulanacağını bilmek gerekir. Bilgisayarda da her veri, yanında ya açıkça ya da örtük bir "nasıl okunacağı" bilgisiyle yaşar. Bu bilginin üç yaygın biçimi:
- Dosya biçimi (file format): Bir dosyanın içindeki byte'ların hangi düzende ve hangi kuralla yazıldığına dair anlaşma. JPEG bir biçimdir, MP3 bir biçimdir, HTML de bir biçimdir.
- Uzantı (file extension): Dosya adının sonundaki
.html,.css,.jpggibi etiket. İşletim sistemine "bu dosyayı şu biçimde oku, şu programla aç" diye ipucu verir. Bu yalnızca bir ipucudur: bir resmin adını.txtyaparsan resim metne dönüşmez, sadece yanlış kuralla okunur ve anlamsız karakterler görürsün. - Veri tipi (data type): Bir programın içinde, bellekteki bir değerin nasıl yorumlanacağını söyleyen etiket: bu bir sayı mı, bir metin mi, bir doğru/yanlış değeri mi? Bölüm 1'deki değişkenlerin her birinin bir tipi vardır. JavaScript'te
"5"(tırnaklı, metin) ile5(sayı) farklı tiplerdir; bu yüzden"5" + 1işlemi6değil"51"verir: metin kuralı uygulandı, toplama değil birleştirme yapıldı. Tipleri Bölüm 9'da C ile, Bölüm 21 ve 30'da daha geniş haliyle ele alacağız.
Bu bölüm baştan sona bir soyutlama hikâyesiydi. Altta (Kat 0) yalnızca bitler var. Üstünde bir kural katmanı (ikilik sayı, ASCII, Unicode, UTF-8, RGB) bu bitlere anlam giydiriyor. Senin HTML yazarken "harf" diye düşünmen, piksellere bakarken "renk" görmen, bu kuralların arayüz olarak çalışıp bitleri gizlemesi sayesinde. Kural ile bitler uyuşmadığında (bozuk Türkçe karakterler) soyutlama "sızar" ve alttaki kat görünür hale gelir. Hata ayıklarken en değerli soru şudur: "Bu veri hangi kuralla yazıldı, ben hangi kuralla okuyorum?"
Bu bölümde neler kuruldu
Bilgisayar, transistörlerin açık ya da kapalı olmasına dayandığı için ikilik sistemle çalışır: 1 ve 0, basamak değerleri 1, 2, 4, 8… Tek bir basamak bir bit, sekiz bit bir bytetır ve bir byte 0–255 arası 256 değer taşır; her eklenen bit olasılıkları ikiye katlar. Byte'ları okumak için onaltılık yazım kullanılır (iki rakam = bir byte). Harfler kodlama kurallarıyla sayıya çevrilir: ASCII 128 karakterle başladı, Unicode her karaktere bir kod noktası verdi, UTF-8 bu numaraları 1–4 byte ile yazar. Renkler RGB'de üç byte, görüntüler piksel ızgarası, video kareler dizisi, ses örneklemelerdir; boyutları sıkıştırmayla küçültülür. Ve en önemlisi: bitlerin anlamı, onları okuyan kuraldadır.
Terimler sözlükte, Bölüm 2 başlığı altında.
CS50x 2026, Lecture 0 ders notları, şu başlıklar: Computer Science and Problem Solving (ikilik sayma), ASCII, Unicode, RGB. Kısa ve tablolu. Derinleşmek istersen: Computer Science from the Bottom Up, Bölüm 2 (Binary and Number Representation); ve UTF-8 için MDN'in kısa tanımı.
Takıldığın her yeri yapay zekâ öğretmenine sor. Bir öneri: ondan sana birkaç ikilik sayı versin, sen onluğa çevir; sonra tersini yap. İki üç tur, bu bölümün en mekanik kısmını kalıcı hale getirir.
Bölüm sonu soruları
Kitaba bakmadan cevapla. Kâğıt kalem serbest.
1010 sayısı onlukta kaçtır?#00FF00 hangi rengi gösterir?ş = U+015F) verir; UTF-8 bu numaranın bellekte hangi byte'larla (C5 9F) yazılacağının kuralıdır. Bkz. 2.5.ş (C5 9F) eski bir kodlamayla iki ayrı karakter gibi okunuyor. Bkz. 2.5."5" + 1 neden "51" verir?"5" bir metindir; metne bir şey eklemek birleştirmedir. Anlam, uygulanan kuraldadır. Bkz. 2.8.01001000 01001001 00100001 bitleri neden hem "HI!" hem de bir renk olabilir? "Anlam bağlamdadır" ilkesini bir hukuk örneğiyle açıkla.Örnek cevabı göster
Bitlerin kendi başına bir anlamı yoktur; 72, 73, 33 sayılarını ASCII kuralıyla okursan harf (H, I, !), RGB kuralıyla okursan bir pikselin kırmızı, yeşil, mavi değerleri olur. Anlamı, veriyi okuyan programın uyguladığı kural belirler. Hukukta da aynı terim farklı bir kanunun bağlamında farklı anlam taşıyabilir; metni yorumlamadan önce hangi kuralın uygulanacağını bilmek gerekir.
Cevabı göster
"Kerem": 5 harf, hepsi ASCII, her biri 1 byte = 5 byte. "Kerem şık": K, e, r, e, m (5) + boşluk (1) + ş (2) + ı (2) + k (1) = 11 byte. 9 karakter, 11 byte: karakter sayısı ile byte sayısı farklıdır.
Kaynaklar
- CS50x 2026, Lecture 0 ders notları. Kaynak: CS50 Hafta 0 notları; birli/ikilik sayma, ampul örneği, byte, ASCII ve "HI!", Unicode ve emoji, RGB, görüntü ve video.
- Ian Wienand, Computer Science from the Bottom Up, Bölüm 2: n bit ile 2ⁿ durum, byte, ASCII'nin 7 bitliği, kilobyte'ın 1024 olarak yerleşmesi, bit ve byte cinsinden hızlar.
- Apple Support, How iOS and macOS report storage capacity: onluk ve ikilik ölçü, 1 GB = 1.073.741.824 byte (ikilik), eski sürümlerin ikilik ölçü kullanması.
- Unicode Consortium, What is Unicode?; MDN, Glossary: Unicode.
- Unicode Consortium, Unicode 18.0.0: toplam 172.808 karakter.
- MDN, Glossary: UTF-8: ilk 128 karakterin ASCII ile aynı olması, diğerlerinin 2–4 byte tutması.
- Wikipedia, Compact Disc Digital Audio: Red Book standardı, 44.100 Hz örnekleme, 16 bit, stereo.