Sayı Sistemleri
Günlük hayatımızda kullandığımız sayı sistemi 10 tabanına göredir. Yani 0,1,2,3,4,5,6,7,8,9 rakamlarını içerir. Bu sayı sistemine "Decimal sayı" sistemi denir.
Dijital kompüterlerinde ikili (Binary), sekizli (Oktal number) ve onalltlı (Hexadecimal) sayı sistemleri kullanılır. Bunların tabanları binary 'de 2, oktal 'da 8 ve hexadecimal 'de 16 'dır.
Dijital kompüterlerinde ikili (Binary), sekizli (Oktal number) ve onalltlı (Hexadecimal) sayı sistemleri kullanılır. Bunların tabanları binary 'de 2, oktal 'da 8 ve hexadecimal 'de 16 'dır.
Dijital kompüter devrelerinin, çalışma prensiplerini anlayabilmek için mutlaka bu kompüterlerde kullanılan sayı sistemlerini de öğrenmek gerekir.
Decimal Sayı Sistemi
Decimal sayı sistemi matematikte kullandığımız sayı sistemidir. Bu sistemdeki rakamlar şunlardır. "0, 1, 2, 3, 4, 5, 6, 7, 8, 9". Bu sistemin tabanı 10 dur. Her sayı "dijit (digit)" olarak adlandırılır.
10 tabanından oluşan 061 sayısını şöyle yasabiliriz.
10 tabanından oluşan 061 sayısını şöyle yasabiliriz.
060 = 0*102 + 6*101 + 1*100 = 0+60+1
613 sayısı ise;
613 = 6*102 + 1*101 + 3*100 = 600+10+3 şeklinde yazılır.
613 = 6*102 + 1*101 + 3*100 = 600+10+3 şeklinde yazılır.
Buna göre bir decimal sayıyı, genel olarak şu denklemle ifade edebiliriz.
N = dn*Rn + ....................... + d3*R3 + d2*R2 + d1*R1 + d0*R0
Burada; dn...........................d0 = Sayı değerlerini,
R = taban değerini (decimal için 10 'dur.) ifade eder.
R = taban değerini (decimal için 10 'dur.) ifade eder.
2368 sayısını decimal olarak ifade edelim:
N = d3*R3 + d2*R2 + d1*R1 + d0*R0
2368 = 2*103 + 3*102 + 6*101 + 8*100
2368 = 2000 + 300 + 60 + 8
R=10, d3=2, d2=3, d1=6, d0=8
Decimal Sayıların Binary Sistemine Çevrilmesi
Decimal sayıları, bölme metodu ile ikili (binary) sisteme çevirilir. Çeviri işleminin nasıl yapıldığını aşağıdaki örnekte görebilirsiniz. Binary sisteme çevirilmek istenen sayı on tabanından 26 olsun..(26)10 ...
Bölünen
|
Bölüm
|
Kalan
| |||
26/2
|
=
|
13
|
+
|
0
|
LSD* en son yazılan sayı
|
13/2
|
=
|
6
|
+
|
1
| |
6/2
|
=
|
3
|
+
|
0
| |
3/2
|
=
|
1
|
+
|
1
| |
1/2
|
=
|
0
|
+
|
1
|
MSD* ilk yazılan sayı
|
Elde edilen sonuçlardan, binary sayısını yazabilmek için, son işlemden yukarıya doğru bulunan değerler yazılır. Sonuç = (26)10 = (11010)2 olarak bulunur.
LSD (Least significant digit) : En küçük değerlikli sayı.
MSD (Most significant digit) : En büyük değerlikli sayı.
MSD (Most significant digit) : En büyük değerlikli sayı.
Binary Sayı Sistemi
Bu sistemin tabanı iki(2) 'dir. "d" 0 ve 1 değerine sahiptir. 2 'nin kuvvetleri hesaplanarak 0 ve 1 ile çarpılır. Böylece sayı binary sistemine göre ifade edilmiş olur.
100 = 1
|
20 = 1
|
101 = 10
|
21 = 2
|
102 = 100
|
22 = 4
|
103 = 1000
|
23 = 8
|
104 = 10000
|
24 = 16
|
Buna göre ikili sistemin denklemi şöyle yazılabilir;
N = .................... + 24d4 + 23d3 + 22d2 + 21d1 + 20d0 veya
N = .................... + 16d4 + 8d3 + 4d2 + 2d1 + d0 olur.
* Binary sayı sistemine göre ifade edilmiş olan 1001 sayısını decimal olarak bulunuz.
1
|
0
|
0
|
1
|
1*23
|
0*22
|
0*21
|
1*20
|
N = 1*23 + 0*22 + 0*21 + 1*20
N = 8+0+0+1
10012 = 910
Tablo 1.1 'de 0 'dan 9 'a kadar olan sayıları ikili sistemdeki ifadeleri görülmektedir.
Decimal
|
Binary
| ||||||||||||||||||||||||||||||
|
|
Tablo 1.1
Görüldüğü gibi binary sistemde bir sayı (digit), 0 veya 1 ile ifade edilir. Bilgisayar dilinde 1 açık, 0 kapalı olarak kullanılır.
* 10010 sayısının desimal değerini bulalım.
N = 1*24 + 0*23 + 0*22 + 1*21 + 0*20
N = 16 + 0 + 0 + 2 + 0
N = 18
Desimal
|
Binary
|
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
0000
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 |
Not: Yukarıdaki tabloda görüldüğü gibi ilk 16 sayı (digit) için 4 basamak, yani 4 "bit" gereklidir.
Binary Sayıların Decimal Sistemine Çevrilmesi
Binary sisteminden (11010)2 sayısını, decimal 'e çevirecek olursak;
N = 1*24 + 1*23 + 0*22 + 1*21 + 0*20
= 16+8+0+2+0
= (26)10 olarak bulunur.
= 16+8+0+2+0
= (26)10 olarak bulunur.
Ondalık Binary Sayıları
Ondalık decimal sayılarını genel olarak şu denklemle ifade edilir.
N = d1*R-1 + d2*R-2 + d3*R-3 ............................ dn*R-n
Buna göre 0,725 ondalık decimal sayısı;
N = 7*10-1 + 2*10-2 + 5*10-3
N = 0,7 + 0,02 + 0,005 şeklinde yazılabilir.
N = 0,7 + 0,02 + 0,005 şeklinde yazılabilir.
Şimdi de 0,1011 binary ondalık sayısını decimal 'e çevirelim.
1*2-1 + 0*2-2 + 1*2-3 + 1*2-4
2-1 = 1/21 = 0,5
2-2 = 1/22 = 0,25
2-3 = 1/23 = 0,125
2-4 = 1/24 = 0,0625
2-2 = 1/22 = 0,25
2-3 = 1/23 = 0,125
2-4 = 1/24 = 0,0625
Buna göre; (0,1011)2 = 1*2-1 + 0*2-2 + 1*2-3 + 1*2-4
= 1*0,5 + 0*0,25 + 1*0,125 + 1*0,0625
= 0,5 + 0 + 0,125 + 0,0625
= (0,6875)10 olur.
= 1*0,5 + 0*0,25 + 1*0,125 + 1*0,0625
= 0,5 + 0 + 0,125 + 0,0625
= (0,6875)10 olur.
Ondalıklı Decimal Sayıların Binary 'e (İkili Sisteme) Çevrilmesi
Ondalık decimal sayılar, binary sistemine çevrilirken "çarpım 2" yöntemi kullanılır.
(0,57251)10 decimal sayısını binary sayı sistemine çevirelim.
(0,57251)10 decimal sayısını binary sayı sistemine çevirelim.
0,57251 * 2 = 1,14502
0,14502 * 2 = 0,29004
0,29004 * 2 = 0,58008
0,58008 * 2 = 1,16016
0,16016 * 2 = 0,32032
0,14502 * 2 = 0,29004
0,29004 * 2 = 0,58008
0,58008 * 2 = 1,16016
0,16016 * 2 = 0,32032
Sonuç: (0,57251)10 = (0,10010............)2 dir.
Sağlaması: (0,10010)2 = 1*2-1 + 0,2-2 + 0*2-3 + 1*2-4 + 0*2-5
= 0,5 + 0,0625
= (0,5625)10
= (0,5625)10
Görüldüğü gibi 0,57251 sayısı, sağlama sonunda 0,5625 çıkmaktadır. İşlem sayısı çoğaltılır ve sonuçta 1 tam sayısı elde edilirse gerçek sayı bulunur. Elektronik hesap makinaları bu sisteme göre çalışır. Geliştirilmiş makinalarda işlem sayısı fazla olacağından, hata miktarıda daha aza indirilmiş olur.Bundan dolayı markaları farklı hesap makinaları aynı işlem için farklı sonuçlar verebilr.
Sonucu tam olan birbaşka işlem yapalım..
(0,65625) sayısını binary sayı sistemine çevirelim.
(0,65625) sayısını binary sayı sistemine çevirelim.
0,65625 * 2 = 1,31250
0,31250 * 2 = 0,62500
0,62500 * 2 = 1,25000
0,25000 * 2 = 0,50000
0,50000 * 2 = 1,0000
0,31250 * 2 = 0,62500
0,62500 * 2 = 1,25000
0,25000 * 2 = 0,50000
0,50000 * 2 = 1,0000
Sonuç: (0,10101)2 dir
Sonuçda görüldüğü gibi 1 tam sayısı elde edilmiş oldu..
Sağlaması: (0,10101) = 1*2-1 + 0*2-2 + 1*2-3 + 0*2-4 + 1*2-5
= 0,5 + 0,125 + 0,03125
= (0,65625)10
= (0,65625)10
Tam ve Ondalıklı Binary Sayıların Decimal 'e Çevrilmesi
Tam ve ondalıklı sayıları beraber olan binary sayısının denklemini şöyle ifade edebiliriz.
N = 24d4 + 23d3 + 22d2 + 21d1 + 20d0 + d1R-1 + d2R-2 + d3R-3 + ......................dnR-n veya
N = 16d4 + 8d3 + 4d2 + 2d1 + d0 + d1R-1 + d2R-2 + d3R-3 + ......................dnR-n
(1010,10110)2 sayısını decimal sayı sistemine çevirelim.
N = 1*23 + 0*22 + 1*21 + 0*20 + 1*2-1 + 0*2-2 + 1*2-3 + 1*2-4 + 0*2-5
N = 8+2+0,5+0,125+0,0625
N = (10,6875)10
(1010,10110)2 = (10,6875)10 olur.
Tam ve Ondalıklı Decimal Sayıların Binary Sayı Sistemine Çevrilmesi
Decimal sayıları binary 'e çeviriken izlenecek yol bölme ve çarpma işlemidir. Virgülden öncesi ve sonrası ayrı ayrı işleme tabi tutulur. Virgülden önceki kısım bölme işlemine tabi tutulurken virgülden sonrası için çarpma işlemi yapılır.
(68,1875)10 decimal sayısını binary sayı sisteminde ifade edelim.
68 / 2 = 34 Kalan 0
34 / 2 = 17 Kalan 0
17 / 2 = 8 Kalan 1
8 / 2 = 4 Kalan 0
4 / 2 = 2 Kalan 0
2 / 2 = 1 Kalan 0
34 / 2 = 17 Kalan 0
17 / 2 = 8 Kalan 1
8 / 2 = 4 Kalan 0
4 / 2 = 2 Kalan 0
2 / 2 = 1 Kalan 0
Buna göre tam sayının yanıtı = (1000100)2 dır.
0,1875 * 2 = 0,3750
0,3750 * 2 = 0,7500
0,7500 * 2 = 1,5000
0,5000 * 2 = 1,0000
0,3750 * 2 = 0,7500
0,7500 * 2 = 1,5000
0,5000 * 2 = 1,0000
Buna göre ondalık kısımda şu şekilde oluşmuş olur = (0011)2
Sonuç olarak = (1000100,0011)2 bulunmuş olur.
Octal Sayı Sistemi
Sekizli (Octal) sayı sisteminin tabanı 8 'dir. Bu sistemde 0,1,2,3,4,5,6,7 sayıları kullanılır. 8 sayısı kullanılmaz, eğer 8 sayısı kullanılsaydı o zaman digit sayısı 9 olurdu.
Sekiz tabanlı sayı dizisini aşağıdaki formülle ifade edebiliriz.
Sekiz tabanlı sayı dizisini aşağıdaki formülle ifade edebiliriz.
N = dn*Rn + ....... d2*R2 + d1*R1 + d0*R0
= dn*8n + ....... d2*82 + d1*81 + d0*80
dn = 0,1,2,3,4,5,6,7 sayılarıdır.
Octal Sisteminin Decimale Çevrilmesi
(36)8 octal sayısını decimale çevirelim.
(36)8 = 3*81 + 6*80
= 3*8 + 6*1
= 24 + 6
= (30)10
Görüldüğü gibi çevirme çarpma işlemi yardımıyla gerçekleştrilir. Binary 'nin decimal 'e çevrilmesi gibi.
Octal
81 80 |
Decimal
101 100 |
Octal
81 80 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
Ondalık Oktal Sayıların Decimal 'e Çevrilmesi
Ondalık oktal sayıları decimal 'e çeviriken kullanılacak formül.
N = d1*8-1 + d2*8-2 + d3*8-3 + ...................
8-1 = 1/8 = 0,125
8-2 = 1/82 = 1/64 = 0,015625
8-3 = 1/83 = 1/512 = 0,0019531
8-2 = 1/82 = 1/64 = 0,015625
8-3 = 1/83 = 1/512 = 0,0019531
(0,21)8 = 2*8-1 + 1*8-2
= 2*0,125 + 1*0,015625
= 0,250 + 0,015625
= (0,265625)10
Decimal Sayıların Octal Sayı Sistemine Çevrilmesi
Decimal sayıların octal sayı sistemine çevrilmesi, decimal sayı sisteminin binary sayı sistemine çevrilmesi gibi olur.
Farklı olarak burada, decimal sayı sekizli sisteme çevrildiği için bölme 2 metodu yerine 8 metodu kullanılır.
(127)10 = (?)8
127 / 8 = 15 + 7
15 / 8 = 1 + 7
1 / 8 = 0 + 1
15 / 8 = 1 + 7
1 / 8 = 0 + 1
(127)10 = (177)8
Sağlamasınıda yapacak olursak.
(177)8 = 1*82 + 7*81 + 7*80
= 64 + 56 + 7
= (127)10
= (127)10
Ondalık Decimal Sayıların Oktal Sayı Sistemine Çevrilmesi
Ondalık decimal sayıları sekizli sayı sitemine çevirirken çarpma metodu kullanılır.
(0,1875)10 = (?)8
0,1875 * 8 = 1,50000
0,50000 * 8 = 4,0000
0,50000 * 8 = 4,0000
(0,1875)10 = (0,14)8
(38,21875)10 = (?)8
Burada yine, tam sayı ayrı, ondalık sayı ayrı bulunur. Bulunan sonuşlar birleştirilerek ondalıklı decimal sayının, octal karşılığı bulunmuş olur.
1. Tam sayı octal karşılığı bölme metodu kullanılarak bulunur.
38/8 = 4 +6
4/8 = 0 + 4
4/8 = 0 + 4
46
2. Ondalık sayının octal karşılığı çarpım 8 metodu ile bulunur.
0,21875 * 8 = 1,75000
0,75000 * 8 = 6,00000
0,75000 * 8 = 6,00000
16
Sonuç :
(38)10 = (46)8
(0,21875)10 = (16)8
(38,21875)10 = (46,16)8
(0,21875)10 = (16)8
(38,21875)10 = (46,16)8
Hexadecimal Sayı Sistemi
Hexadecimal sistemin tabanı 16 dır. Bu sistemdeki sayı sınırı 0-15 arasındadır. 0 'dan 9 'a kadar olan sayılar aynen kullanılır.10,11,12,13,14,15 sayıları ise birer harf sembolü ile ifade edilir.
Decimal
Sayılar |
Hexadecimal Sayılar
| ||||||||||||||||||||||||||||||||
|
|
Hexadecimal Sayıların Decimal 'e Çevrilmesi
Bu sayı sistemindeki kuvvet dizilişi, sağdan sola doğrudur.
160, 161, 162 ........16n
(26)16 = (?)10
= 2*161 + 6*160
= 2*16 + 6*1
= 32 + 6
= (38)10
(26)16 = (38)10 olur.
|
Decimal
|
Hexadecimal
|
Decimal
|
Hexadecimal
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
Tablo 1.3 - 0 - FFFF16 arasındaki hexadecimal sayıların decimal karşılıkları.
** (2B)16 = (?)10
= 2*161 + B*160
= 2*161 + 11*160
= 2*16 + 11*1
= 32 + 11
= 43
= (2B)16 = (43)10
= 2*161 + 11*160
= 2*16 + 11*1
= 32 + 11
= 43
= (2B)16 = (43)10
** (A3)16 = (?)10
= A*161 + 3*160
= 10*16 + 3*1
= 160 + 3
= 163
= (A3)16 = (163)10
= 10*16 + 3*1
= 160 + 3
= 163
= (A3)16 = (163)10
** (2FF)16 = (?)10
= 2*162 + F*161 + F*160
= 2*256 + 15*16 + 15*1
= 512 + 240 + 15
=767
= (2FF)16 = (767)10
= 2*256 + 15*16 + 15*1
= 512 + 240 + 15
=767
= (2FF)16 = (767)10
** (FFF)16 = (?)10
= F*162 + F*161 + F*160= 15*256 + 15*16 + 15*1
= 3840 + 240 + 15
= 4095
= (FFF)16 = (4095)10
= 3840 + 240 + 15
= 4095
= (FFF)16 = (4095)10
Ondalık Hexadecimal Sayıların Decimal 'e Çevrilmesi
** (0,8)16 = (?)10
= 8*16-1= 8 * 1/16
= 0,5
= (0,8)16 = (0,5)10
= 0,5
= (0,8)16 = (0,5)10
** (0,48)16 = (?)10
= 4*16-1 + 8*16-2
= 4 * 1/16 + 8 * 1/256
= 4/16 + 8/256
= 0,25 + 0,03125
= 0,28125
= (0,48)16 = (0,28125)10
= 4 * 1/16 + 8 * 1/256
= 4/16 + 8/256
= 0,25 + 0,03125
= 0,28125
= (0,48)16 = (0,28125)10
Decimal Sayıların Hexadecimal 'e Çevrilmesi
Decimal sayılar bölme metodu ile hexadecimal 'e çevrilirler.
** (142)10 = (?)16
= 142 / 16 = 8 + 14
= 8 / 16 = 0 + 8
= 8 / 16 = 0 + 8
(142)10 = (8E)16
sağlamasını yaparsak;
= 8*161 + E*160
= 128 + 14
= 142
= 128 + 14
= 142
** (247)10 = (?)16
= 247 / 16 = 15 + 7
= 15 / 16 = 0 + 15
= 15 / 16 = 0 + 15
(247)10 = (F7)16
Ondalık Decimal Sayıların Hexadecimal 'e Çevrilmesi
** (0,1875)10 = (?)16
= 0,1875 * 16
= 3
= 3
(0,1875)10 = (0,3)16
Binary - Octal - Hexadecimal Sayı Sistemlerinin Çevirimleri
Binary - Octal Çevirmeleri
Octal sayıların binary formu ile ifade edilmesi, basit bir teknoloji gerektirdiği için tercih edilir.
(275)8 = (?)2
1. 275 / 2 = 136 + 12. 136 / 2 = 57 + 03. 57 / 2 = 27 + 14. 27 / 2 = 13 + 15. 13 / 2 = 5 + 16. 5 / 2 = 2 + 17. 2 / 2 = 1 + 08. 1 / 2 = 0 + 1
(275)8 = (010111101)2
Yapılan işlemin açıklamasını yapacak olursak;
1. 275 / 2 = 136 + 1 şöyle bulunur.
15 Sayısını 2 ye bölerken 15 / 2 = 7 + 1 yazamayız. Bu sonuç, 10 tabanlı sayı sistemine göre doğrudur. Fakat 8 tabanına, yani octal sayı sisteminde 15 'in decimal karşılığı Tablo 1.2 den de görüldüğü gibi 13 tür. Dolayısıyla 15 / 2 yi 13 / 2.olarak düşünmemiz gerekir. Buna göre 13/2 = 6 + 1 olur. Sonuç olarak 275 / 2 = 136 + 1 eder.
2. 136 / 2 = 57 + 0
13 Octal sayısının decimal karşılığı 11 dir. Bundan dolayı 13 / 2 bölümünü 11 / 2 olarak düşünmemiz gerekir ve, 11 / 2 = 5 + 1 olur. 16 / 2 bölümü ise 14 / 2 olarak düşünülmeli ve 136 / 2 işleminin sonucu 57 + 0 bulunmalıdır.
Yapılan açıklamalar diyer maddelerde de uygulanırsa sonuca ulaşılır.
NOT: Yani yapılan bölümlerde, sayı sisteminin tabanı 8 olduğuna göre 0,1,2,3,4,5,6,7 sayılarının 2 ye bölümü normal yapılır. Bundan sonraki sayılar için tablo 1.2 den bölünecek sayının decimal karşılığı bakılarak bulunan sayıyı 2 ye bölmemeiz gerekmektedir.
Sonuç olarak (275)8 octal sayısını binary formu ile şu şekilde ifade edebiliriz.
(275)8=
|
010
|
111
|
101
|
Binary için
|
Binary için
|
Binary için
| |
2
|
7
|
5
|
Böylece her octal sayı binary olarak ifade edilmiş olur. Baştaki "0" sayı gruplarını 3 'e tamalamak için konulmuştur. Sekiz tabanlı olan bir sayı, 0-7 digitleri kapsar. Bu da bize, sekiz tabanlı her sayının binary formunda en fazla 3 bit olacağını gösterir.
(3567)8 = (?)2
(3)8 = (011)2
(5)8 = (101)2
(6)8 = (110)2
(7)8 = (111)2
(5)8 = (101)2
(6)8 = (110)2
(7)8 = (111)2
(3567)8 = (011101110111)2
Binary den octal sayı sisteminede aynı şekilde çevirim yapılabilir.
(101110110)2 = (?)8
(101)2 = (5)8
(110)2 = (6)8
(110)2 = (6)8
(110)2 = (6)8
(110)2 = (6)8
(101110110)2 = (566)8
Binary Sayı Sistemini Hexadecimal 'e Çevrilmesi
Dört basamaklı binary sayıları, hexadecimal olarak ifade edilebilir. Dört bitli binary sayıların listesi Tablo 1.4 de görülmektedir. Sayılar binary 'den hexadecimale çevrilirken sağdan sola doğru dörder basamak olmak üzere gruplandırılır. Çünkü hexadecimal sayı istemini tabanı 16 dır ve binary sayı sisteminde 0-15 sayıları, 4 bit ile ifade edilebilmektedir.
Binary
|
Hexadecimal
| ||||||||||||||||||||||||||||||||
|
|
Tablo 1.4 - Binary - Hexadecimal karşılıkları
** (011011110101)2 = (?)16
(0110)2 = (6)16
(1111)2 = (F)16
(0101)2 = (5)16
(1111)2 = (F)16
(0101)2 = (5)16
(011011110101)2 = (6F5)16
** (1A6)16 = (?)2
(1)16 = (0001)2
(A)16 = (1010)2
(6)16 = (0110)2
(1A6)16 = (000110100110)(A)16 = (1010)2
(6)16 = (0110)2