Sayı Sistemleri

Transkript

Sayı Sistemleri
BÖLÜM 1
GİRİŞ
1.1 SAYI SİSTEMLERİ
1.1.1 Konumsal Sayı Sistemleri
İkili sayı sistemi, sayısal bilgisayarlarda kullanılan en geleneksel ve kolay
gerçeklenebilen bir sayı sistemidir. Bu gösterimde bir sayı n-bitlik bir vektör olarak
kodlanır. Bu vektördeki her bit kendi konumuna göre ağırlıklandırılır. Her sayı sisteminde
bir taban (radix veya base) r vardır. Her bit 0 ile (r-1) arasında bir tam değere sahiptir. İkili
sayı sisteminde r = 2’ dir. Bu yüzden her bit yalnız 0 veya 1 değerini alabilir.
(1.1) bağıntısıyla verilen n-bitlik bir vektörü inceleyelim .
A = an −1an − 2 K a1a 0
(1.1)
Burada 0 ≤ i ≤ n − 1 için ai = 0 veya 1’dir. Bu vektör, V tamsayı değerlerini 0 − ( 2n − 1)
arasında gösterebilir.
V = an-12n-1 + ... + a121 + a020
(1.2)
Bu yüzden genellikle A ile gösterilen A vektörünün değeri
n −1
A = ∑ a ir i
(1.3)
i= 0
bağıntısıyla tanımlanabilir. (1.3) bağıntısı pozitif tamsayıları göstermek içindir. Bu
gösterim kesirli sayıları kapsayacak şekilde (1.4) bağıntısındaki gibi genişletilebilir.
n −1
−m
A = ∑ air i + ∑ air
i= 0
= an-12
i = −1
n-1
+ ... +a121 + a020
+ a-12-1 + a-22-2 +... + a-m2-m
(1.4)
101101.1101 bit dizisi (taban noktası ile birlikte) aşağıdaki değeri göstermektedir.
1x25 + 0x24 + 1x23 + 1x22 +0x21 + 1x20 +
1
+1x2-1 + 1x2-2 + 0x2-3 + 1x2-4 = 45
13
16
Bir sayı sisteminde her bit 0 ile (r-1) arasında bir değer alır. Bu durum hanelerden oluşan
bir S kümesi oluşturur.
S = {0,1,2, ... ,r-1}
(1.5)
Bu takımdaki bütün haneler pozitif olarak ağırlıklanmıştır. Ayrıca hem pozitif ve hem de
negatif ağırlıklı hanelerin bulunduğu bir küme kurmak mümkündür, örneğin
T = {-l, ... , -1,0,1, ... , l}
(1.6)
Burada l, kümenin alçak ve yüksek sınırını gösteren bir pozitif tamsayıdır. Bu artık
(redundant) sayı sistemi olarak düşünülür, çünkü verilen bir sayıyı göstermek için birden
çok yol olabilir.
Örneğin n = 4 ve r = 2 için A = -5 sayısı aşağıda verilen dört gösterime sahip olur.
Artık sayı sisteminin, aritmetik işlemlerde kullanılmasını zorlaştıran işte bu çok
gösterimdir. Ayrıca her işaretli hane, bu haneyi göstermek için birden çok bit
gerektirdiğinden, saklayıcı gereklerini ve saklama yolunun genişliğini arttırabilir.
A = -5
→
→
→
→
23
22
21
20
0
0
-1
-1
-1
-1
0
1
0
-1
1
0
-1
1
1
-1
1.1.1.1 Sekizli (Octal) Sayı Sistemi
Sekizli sayı sistemi tabanı 8 olan bir sistem olup birçok bilgisayarda yaygın olarak
kullanılmıştır. IBM 7090, DEC PDP-8 bilgisayarlarında ve birçok mikrobilgisayar
yongalarında kolay ve doğrudan giriş/çıkış işlemi için sekizli sayılar kullanılmıştır. Bu
sistemde haneler 0-7 arasındaki değerleri alır. Herhangi bir sayı (1.7) bağıntısı ile
verilebilir.
A = an-1 8n-1 + ... + a2 82 + a1 81 + a0 80
(1.7)
Burada an-1, ... , a2, a1, a0 haneleri 0,1,2,3,4,5,6,7 değerlerini alabilir.
Sekizliden Onluya Dönüşüm. (1.7) bağıntısı kullanılarak öğneğin (37)8 sayısını
onluya dönüştürelim.
2
(37)8 = 3x81 + 7x80
= 3x8 + 7x1
= (31)10
Onludan Sekizliye Dönüşüm. Onludan sekizliye dönüşüm, onlu sayının tamsayı
kısmı için tekrarlı bölme ve kesirli kısmı için tekrarlı çarpma kullanılarak yapılır. Örnek
olarak (127)10 sayısını dönüştürelim.
127
= 15 + 7
8
15
= 1+ 7
8
1
= 0 +1
8
177
(127)10 = (177)8 bulunur.
Kesirli onlu sayının sekizliye dönüşümü için (49.21875)10 sayısını ele alalım.
Tam Kısım
Kesirli Kısım
49
= 6 +1
8
6
= 0+6
8
0.21875
0.75
x
x 8
8
1.75000
Sonuç
(49.21875)10 = (61.16)8
6.00
61
1
6
1.1.1.2 Onaltılı (Hexadecimal) Sayı Sistemi
Onaltılı sayı sistemi IBM 360, IBM 370, IBM 1130, Honeywell 200, ve RCA
spectra 70 gibi birçok bilgisayarda kullanılmaktadır. Bu sistem, 10, 11, 12, 13, 14, 15 hane
değerlerini
temsil edebilmek için ilave sayı sembollerine ihtiyaç göstermektedir. Bu
sistemde haneler 0-15 arasında değerler alır; Şekil 1.1.
Onaltılı Tamsayılar. Herhangi bir onaltılı tamsayı (1.8) bağıntısıyla verilebilir.
A = an-116n-1 + ...+ a2162 + a1161 + a0160
(1.8)
Burada an-1 ... a1,a0 haneleri 0, 1, 2, ... 14,15, değerlerini alabilir. Örneğin (23)16 sayısının
(35)10 sayısına eşit olduğunu gösterelim.
(23)16 = 2x161 + 3x160
= 2x16 + 3x1
3
= (35)10
veya
(1FF)16 = 1x162 + Fx161 + Fx160
= 1x256 + 15x16 + 15x1
= (511)10
Onlu
0
1
2
3
4
5
6
7
Onaltılı
0
1
2
3
4
5
6
7
Onlu
8
9
10
11
12
13
14
15
Onaltılı
8
9
A
B
C
D
E
F
Şekil 1.1. Onaltılı sayı sistemindeki haneler.
Kesirli onaltılı sayıların onlu karşılığını bulmak için, kesir haneleri, konumlarına
bağlı olarak 16’nın kuvvetlerine bölünür.
(3B.8)16 = 3x161 + Bx160 + 0.8x16-1
= (59.5)10
Onlu Sayının Onaltıya Dönüşümü. Onludan onaltıya dönüşüm, tam kısmını
tekrarlı olarak 16’ya bölerek ve kesirli kısmını tekrarlı olarak 16 ile çarparak yapılır.
Aşağıdaki örnekte bu yöntem gösterilmiştir.
(567.1875)10 = (?)16
Tam Kısım
Kesirli Kısım
567
= 35 + 7
16
35
= 2+3
16
2
= 0+2
16
0.1875
x
Sonuç
(567.1875)10 = (237.3)16
16
3. 000
237
İkilinin Onaltıya Dönüşümü. İkili hanelerden dörtlü gruplar yaparak onaltıya
dönüşüm sağlanabilir. Gruplamaya sağdan başlanır ve her dörtlü grubun yerine onaltılı
eşdeğeri koyulur. Aşağıdaki örneklerle bu işlem gösterilmiştir.
4
(0110 1111 0101)2 = (?) 16
0110 1111 0101
6
F
olduğundan
5
(0110 1111 0101)2 = 6F5 bulunur.
1.1.2 Sayı Gösterimleri
Tüm matematik fonksiyonlar dört ana aritmetik işlem cinsinden ifade edilebilir:
Toplama, çıkarma, çarpma ve böime. Bu işlemler üç tür sayı gösterimine karşı düşen üç
çalışma modunda icra edilebilir: Sabit-noktalı (fixed point), kayan-noktalı (floating
point,) ve onlu (binary coded decimal).
Sabit-noktalı aritmetik basit olarak verinin sabit taban noktası ile gösterildiği
problemlerde kullanılır, yani taban noktası sayıda sabit bir konumda kalır. Sabit noktalı
işlemler iki sınıfa bölünebilir. Tamsayı aritmetiğinde kesir (radix) noktası sayının
sağındadır. Bundan dolayı sabit-noktalı notasyonda gösterilmiş bir tamsayı, bu sayının
tutulduğu kaydedicinin sağında imalı bir kesir noktasına sahiptir, Şekil 1.2. Kesirli
aritmetikte, kesir noktası sayının solundadır. Bilgisayar tasarımcıların çoğu tamsayı
biçimini benimser.
X X X.....X
.
.
X X X..... X
Tamsayı biçimi
Kesirli sayı biçimi
Şekil 1.2. Sabit-noktalı sayı gösterim biçimleri
Kayan-noktalı aritmetik, genlik ölçeklemesinin çok sık gerekli olduğu bilimsel ve
mühendislik hesaplarında kullanılır. Kayan-noktalı işlemler de iki sınıfa ayrılır. Normalize
edilmiş
işlemler, hesaplamaya giren verilerin normalize edilmesini gerektirir. Bu
gösterimde kesir noktasının hemen sağındaki bit 1’dir. Normalize edilmemiş işlemlerde
sayılar kesirli biçimde gösterilir, ama kesir noktasının hemen sağındaki bit 1 veya 0
olabilir. Bilgisayarların çoğu normalize edilmiş sayıları kullanmaktadır. Her iki biçim Şekil
1.3’te gösterilmiştir, burada X = 0/1’dir.
.
1 X X.....X
Normalizeli biçim
.
X X X..... X
Normalizesiz biçim
5
Şekil 1.3. Kayan-noktalı sayı biçimleri
Kayan-noktalı aritmetik öiçekleme faktörü problemini ortadan kaldırır, ve sayı
alanını sabit-noktalı aritmetiğin üstüne çıkarır. Kayan-noktalı bir sayı, f kesir (fraction)
kısmı ve e üs (exponent) kısmı olmak üzere iki kısımdan meydana gelir. Bu iki kısım
e’inci kuvveti alınmış bir tabanın f ile çarpımından elde edilen bir sayıyı gösterir, yani A
kayan noktalı sayısı
A = fxre
(1.9)
biçimde ifade edilir. Burada f ve e işaretli sabit noktalı sayılar ve r ise tabandır. Bazen kesir
kısmına mantissa ve üs kısmına da karakteristik adı da verilebilir.
Kesir kısmı genellikle işaretli genlik, üs ise 2’li tümlenmiş veya kutuplu biçimde
temsil edilir. Doğruluk önemli olduğundan kesirde mümkün olduğu kadar çok anlamlı bit
bulunmalıdır. Bu iş sayı normalize yapılarak başarılır. 2 tabanında normalizasyon, taban
noktasının hemen sağındaki bit 1 oluncaya kadar kesirin sola doğru kaydırılması ve üssün
de bu kaydırmaya uygun olarak azaltılması ile yapılır. Normalize edilmiş kesirin genliği
(1.10) bağıntısıyla verilen mutlak değere sahiptir.
(1/r) ≤ f <1
(1.10)
Burada r tabanı göstermektedir.
32-bitlik kayan-noktalı bir ikili sayı biçimi Şekil 1.4’te gösterilmiştir. Sayının
işareti her zaman en anlamlı hanede bulunur. Bu bit pozitif sayılar için 0 ve negatif sayılar
için 1 olur.
31 30
S
e
24 23
0
f
24 - bitlik kesir
7- bitlik işaretli üs
sayının işareti
Şekil 1.4. 32-bitlik ikili kayan-noktalı sayının biçimi.
e üssü pozitif veya negatif tamsayı olabilir. Negatif üsler 2’li tümlenmiş biçimde
tutulur.
Kayan-noktalı
sayıların
toplanması
6
ve
çıkarılması
işlemlerinde
üslerin
karşılaştırılması gerektiğinden, üslerin işaretlerinin kullanılması gerekir. Halbuki
karşılaştırma işlemi üslerin işaretlerini gerektirmeden yapılabilir. Bunun için kayan-noktalı
sayı oluşturulurken her üsse pozitif bir değer eklenerek tüm üsler pozitif sayılara
dönüştürülür. Bu pozitif değere kutuplama sabiti denir ve en negatif üssün genliğine eşittir.
Eğer üs alanı m bitlik uzunluğa sahipse, o zaman kutuplama sabiti +2
m-1
olur ve tüm e
üsleri 2m-1 kadar kutuplanır, yani bu üsler
e kutuplu = e + 2m-1
(1.11)
ile gösterilir. Bu kutuplama sayesinde 0 değerli kayan-noktalı bir sayının hem mantissası
hem de üs kısmı tamamen sıfır olur. 2’li tümlenmiş gösterimde sıfır değerli sayı için üs en
büyük negatif değerini alır.
Onlu aritmetik onlu veriler üzerinde yapılan aritmetik,kaydırma ve düzenleme
işlemleri için kullanılır. Onlu haneler paketli veya paketsiz biçimde gösterilebilir. Paketli
biçimde her bayt, iki onlu hane içerir. İşaret hanesi de 4-bitlik olmalıdır. Paketsiz biçimde
bir baytın en sağdaki 4-biti bir onlu hane oluşturur; en soldaki 4-bit ise onlu veriyi temsil
etmek için kullanılmaz. Bu iki onlu sayı biçimi Şekil 1.5’te gösterilmiştir.
7
4
3
0
Hane
Hane
Hane
İşaret
Bölge
Hane
İşaret
Hane
Paketli biçim
Paketsiz biçim
Şekil 1.5. Onlu sayı biçimleri.
İkili işlem yapan bir işlemci onlu sayıları alır, ikili biçime dönüştürür, işlemleri
yapar, ve sonuçları tekrar onlu biçime dönüştürebilir. Bu durum az sayıda giriş/çıkış ve çok
miktarda hesaplama için yeterlidir. Ama eğer bunun tersi geçerli ise, yani çok sayıda
giriş/çıkış işlemi ve buna nispeten az miktarda hesaplama gerekiyorsa, o zaman onlu
aritmetik kullanarak hesapları yapmak daha verimlidir.
Bir onlu hane 4-bitten oluşur. 4-bitle 15’e kadar sayılar temsil edilebildiği halde,
onlu hane 9’dan büyük değer alamayacağından 10-15 arasındaki değerler geçersiz onlu
7
hanelerdir. Bu yüzden onlu sayılarla işlem yapıldığı zaman her onlu hanenin geçerli olup
olmadığı test edilmeli ve eğer geçersiz ise o haneye 6 eklenerek düzeltilmelidir.
1.1.3 Tamsayı Gösterimleri
Eğer yalnız pozitif tamsayılar sabit-noktalı notasyonda gösterilecekse, o zaman nbitlik bir kelime 0-(2n-1) değerine kadar tüm sayıları gösterebilir. Ama hesaplamalarda hem
pozitif hem de negatif tamsayılar kullanıldığından, pozitif ve negatif sayıların mümkün
olduğunca eşit dağılabileceği bir kodlama biçimi bulunmalıdır. Bu kodlamada işaret
denetimi kolay yapılabilmeli, 0’ların algılanması basit olmalı, ve dört işlemin icrası rahatça
yapılabilmelidir.
Konumlu sayı sisteminde pozitif ve negatif sayıları göstermek için kullanılan üç
yöntem vardır: İşaretli genlik (sign magnitude), küçültülmüş tabanlı tümleme (diminished
radix complement), ve tabanlı tümleme (radix complement).
1.1.3.1 İşaretli Genlik
Bu gösterimde en anlamlı bit tamsayısının işaretini gösterir ve pozitif sayılar için 0,
negatif sayılar için 1’dir. Pozitif sayı 0-(2n-1-1) arasında ve negatif sayı ise 0-[-(2n-1 -1)]
arasında değerler alabilmektedir. Bu yüzden pozitif bir sayı
A = (0an-2an-3 ... a1a0)r
(1.12)
ve negatif bir sayı
-A = [(r-1)an-2an-3 ... a1a0]r
(1.13)
ile gösterilebilir. r = 2 için (1.12) ve (1.13) bağıntıları sırasıyla
A = 0nn-2an-3 ... a1a0
-A = 1an-2an-3 ... a1a0
(1.14)
haline gelir. İşaretli genlik notasyonunda pozitif sayı negatif sayıdan yalnız işaret hanesinde
farklılık gösterir. an-2an-3 ... a1a0 genlik kısmı hem pozitif hemde negatif sayılar için aynıdır.
İşaretli genlik gösteriminde var olan bir problem 0 sayısının iki farklı biçimde
gösterilebilmesidir, yani +0 ve -0. İkinci problem zıt işaretli iki sayı toplanırken meydana
gelir; sonucun işaretini belirlemek için genlikler karşılaştırılmalıdır. Diğer iki yöntemde bu
durum gerekli değildir. İşaretli genlik gösterimi kayan-noktalı sayıların kesir kısmının
gösterimi için sık sık kullanılmaktadır.
8
1.1.3.2.Küçültülmüş Tabanlı Tümleme
İkili notasyonda küçültülmüş tabanlı (r-1) tümleme 1’li tümleme olarak bilinir. 0 (2n-1 - 1) arasındaki pozitif tamsayılar, ikili konumsal sayı sistemindeki gibi gösterilir, yani
A = 0 an-2an-3 ... a1a0
(1.15)
biçimindedir. 0 - [-(2n-1 -1)] arasındaki negatif sayılar ise, sayının pozitif eşdeğerlerindeki
bitlerin tümleyenleri alındıktan sonra işaret hanesine 1 koyularak elde edilir. Bu yüzden
pozitif bir sayı
A = 0an-2an-3 ... a1a0
(1.16)
ile ve aynı mutlak değere sahip negatif bir sayı ise
A = 1an − 2 an − 3 K a1a0 1 a0
(1.17)
ile gösterilir. Veya daha genel biçimde
A = [ ( r − 1) an− 2 an− 3 K a1 a 0 ] r
(1.18)
ile gösterilebilir. Burada ai = ( r − 1) − ai dir.
Bu gösterimde iki sayının işaretlerinin karşılaştırılması çok açıktır, çünkü en
soldaki bit pozitif sayılar için 0 ve negatif sayılar için 1’dir. Ama 0 için çift gösterim halen
daha devam etmektedir. Çünkü tamamen 0’lardan oluşan bir kelime (+0) tümlendiği
zaman, tamamen 1’lerden oluşan bir kelime (-0) haline gelir.
1.1.3.3 Tabanlı Tümleme
İkili notasyonda tabanlı tümleme 2’li tümlemedir. 0-(2n-1-1) arasındaki pozitif
sayılar, ikili konumsal sistemde
A = 0an-2an-3 ... a1a0
(1.19)
bağıntısıyla gösterilir. Negatif sayılar, negatif değeri arzu edilen sayının 1’li tümleyenine 1
eklenerek bulunur. Bu yüzden negatif bir sayı
( A)
+1
= ( 1an − 2 an − 3 K a1a0 ) + 1
(1.20)
bağıntısıyla gösterilir.
Genellikle negatif bir sayının tabanlı tümleyeni
9
( A ) +1 = {[( r − 1) an − 2 an − 3 K a1a0 ] + 1}r
biçiminde veya
( A)
+1
(1.21)
= r n − A ile gösterilir. İşaret denetimi yine yalnız iki bitin
karşılaştırılmasına dayanır. 0 değerli sayının tek bir gösterimi vardır, çünkü bir 0 dizisinin
negatifi alındığı zaman yine 0 dizisi elde edilir (anlamlı bit konumundan çıkan elde gözardı
edilir).
Sayı alanı (-2n-1) - (2n-1-1) arasındadır. Burada -2n-1 sayısı 1 ve bunu izleyen (n-1)
adet 0 ile gösterilir. Toplama ve çıkarma küçültülmüş tabanlı tümlemedekinden daha kolay
yapılır, ve sonuç daima doğru 2’li tümlenmiş biçimdedir.
1.1.4 Alfasayısal Kodlar
Sayısal bilgisayarların çoğu uygulamalarında yalnız sayısal veriler değil aynı
zamanda harfler de kullanılır. Örneğin binlerce poliçe hamili olan bir sigorta şirketi,
kütüklerini işlemek için bilgisayar kullanmak zorundadır. Adları ve diğer ilgili bilgileri
temsil edebilmek için, alfabedeki harflerin kodlanabilmesi gerekir. Ayrıca aynı ikili kod,
sayıları ve $ gibi diğer özel karakterleri de temsil edebilmelidir. Alfasayısal karakter
takımı, 10 tane onlu haneyi (rakamları), alfabedeki 26 harfi, ve bir çok özel karakteri içeren
bir elemanlar takımıdır. Böyle bir takım yalnız büyük harfleri kapsarsa 36-64 arasında,
veya hem büyük hem de küçük harfleri kapsarsa 64-128 arasında eleman içerir. İlk
durumda 6-bitlik ikinci durumda ise 7-bitlik ikili koda ihtiyaç vardır.
İkili kodlar bilgisayarlarda önemli rol oynar. Bu kodlar ikili kod olmalıdır, çünkü
bilgisayarlar yalnız 1 ve 0’ları saklayabilir. Bilinmelidir ki, ikili kodlar yalnız sembolleri
değiştirir, onların temsil ettikleri bilgilere ait elemanların anlamını değiştirmez.
Bilgisayardaki bitleri rastgele incelediğimiz zaman çoğu kez ikili sayılardan ziyade bir tür
kodlanmış bilgiyi temsil ettiklerine rastlarız.
1.1.4.1 ASCII Karakter Kod
Alfasayısal karakterler için standart ikili kod ASCII (American Standart Code for
Information Interdange) koddur. Tablo 1.1 de gösterilen 128 karakteri kodlamak için 7-bit
kullanır. Kod bitleri B1 anlamsız ve B7 en anlamlı olacak şekilde atanmıştır. Örneğin A
harfi 1000001 bit dizisiyle (sütun 100, satır 0001) temsil edilir. ASCII kod, basılabilen 94
grafik karakter ve çeşitli denetleme fonksiyonları için kullanılan 34 basılamayan karakter
10
içerir. Grafik karakterler A’dan Z’ye 26 büyük harf, 0’dan 9’a 10 rakkam, ve %, *,ve $ gibi
32 özel karakterden ibarettir.
Tablo1.1 American Standard Coode for Information Interchange (ASCII)
B7B6B5
B4B3B2B1
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
000
001
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
010
011
100
101
110
111
SP
!
“
#
$
%
&
‘
(
)
*
+
‘
—
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
‘
a
b
c
d
e
f
g
h
i
j
k
ı
m
n
o
P
q
r
s
t
u
v
w
x
y
z
{
¦
}
~
DEL
Kontrol karakterleri
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
SP
Null
Start of heading
Start of text
End of text
End of transmission
Enquiry
Acknowledge
Bell
Backspace
Horizontal tab
Line feed
Vertical tab
Form feed
Carriage return
Shift out
Shift in
Space
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
DEL
Data link escape
Device control 1
Device control 2
Device control 3
Device control 4
Negative acknowledge
Synchronous idle
End of transmission block
Cancel
End of medium
Substitute
Escape
File separator
Group separator
Record separator
Unit separator
Delete
34 denetim karakteri, ASCII tabloda kısaltılmış adlarıyla gösterilmiştir. Bu
karakterler tablonun aşağısında tam fonksiyonel adlarıyla yeniden listelenmiştir. Denetim
11
karakterleri, verilerin yolunu çizmek ve önceden belirlenmiş biçimde bir metnin basımını
düzenlemek için kullanılır. Biçim etkileyiciler, bilgi ayırıcılar, ve haberleşme denetim
karakterleri olmak üzere üç çeşit denetim karakteri vardır. Biçim etkileyiciler, baskının
yerleşimini denetleyen karakterlerdir. Bunlara örnek olarak BS geri-alma (backspace), HT
yatay tablolama (horizontal tabulation), ve CR geri-dönüş (carriage return) karakterleri
verilebilir. Bilgi ayırıcılar, verileri paragraf ve sayfalar gibi bölümlere ayırmak için
kullanılır. Bunlara RS kayıt ayırıcı (record separator) ve FS kütük ayırıcı (file separator)
karakteri örnek olarak verilebilir. Haberleşme denetim karakterleri, uzak terminaller
arasında metnin iletimi için yararlıdır. Telefon hatları üzerinden iletişim yapıldığı zaman
metni çerçevelemek için kullanılan STX metni başlatma (start of text ) ve ETX metni
sonlandırma (end of text) karakterleri bu sınıfa örnek olarak verilebilir.
ASCII, 7-bitlik bir koddur, ama çoğu bilgisayarlar bayt adı verilen 8-bitlik
büyüklüğü tek bir birim olarak kullanır. Bundan dolayı ASCII karakterler çoğunlukla en
anlamlı biti 0 olmak üzere bayt başına bir karakter düşecek şekilde saklanır. Bu ilave bit
uygulamaya bağlı olarak bazen özel amaçlar için kullanılır. Örneğin bazı yazıcılar (printer),
en anlamlı biti 1 olan 8-bitlik ilave 128 ASCII karakter kullanılır. Bu sayede Greek
karakterler ve italik biçimler üretilebilmektedir.
IBM cihazlarda kullanılan diğer alfasayısal kod EBCDIC (Extended BCD
Interchange Code) koddur. Bu kod her karakter için 8-bit kullanır. EBCDIC ile ASCII aynı
karakter sembollerini kullanır, ama karakterlerin bit atamaları farklıdır. Adından da
anlaşılacağı gibi; harfler ve rakamların ikili kodu, BCD kodun bir uzatımıdır. Bunun
anlamı şudur: Kodun ilk ve son dört biti, BCD kodda olduğu gibi 0000-1001 arasında
değişir.
1.2 LOJİK İŞLEMLER
İkili lojik, iki ayrı değer alan değişkenler ve lojik anlam taşıyan işlemlerle uğraşır.
Değişkenlerin aldığı bu iki değer farklı şekillerde adlandırılabilir, ama buradaki amaca
uygun olması açısından ikili değer cinsinden düşünülmeleri ve her değişkene 1 veya 0
atanması uygundur. Değişkenler alfabedeki harflerle adlandırılır (örneğin A, B, C, ... gibi).
İkili değişkenlere ilişkin üç temel lojik işlem vardır: AND, OR, NOT işlemleri.
12
1. AND İşlemi. Bu bir Boole çarpma işlemidir. A ve B Boole değişkenleri olmak
üzere A AND B = AB şeklinde gösterilir. Bu işlemi gerçekleyen lojik kapının sembolik
gösterimi ve bu işlemin doğruluk (truth) tablosu Şekil 1.6 da gösterilmiştir. Tablodan da
görüleceği üzere AND işlemi iki değişkenin 1 olması durumunda 1 sonucunu verir.
(a)
(b)
Şekil 1.6. (a) AND kapısının sembolik gösterimi, (b) doğruluk tablosu.
2. OR İşlemi. Bu bir Boole toplama işlemidir. A ve B Boole değişkenleri olmak
üzere A OR B = A + B şeklinde gösterilir. Bu işlemi gerçekleyen lojik kapının sembolik
gösterimi ve bu işlemin doğruluk tablosu Şekil 1.7 de gösterilmiştir. Her iki değişkenin
aynı anda 0 olması durumunda OR işlemi 0 sonucunu doğurur.
(a)
(b)
Şekil 1.7. (a) OR kapısının sembolik gösterimi, (b) doğruluk tablosu.
3. NOT İşlemi. Bu bir tümleme işlemidir. A bir Boole değişkenini veya
fonksiyonunu göstermek üzere NOT A = A ile gösterilir. Bu işlemi gerçekleyen lojik
kapının sembolik gösterimi ve doğruluk tablosu Şekil 1.8 de gösterilmiştir.
(a)
(b)
Şekil 1.8. (a) NOT kapısının sembolik gösterimi, (b) doğruluk tablosu.
Bu işlemler temel işlemler olup, bunlardan türetilen türev işlemler vardır. Türev
işlemler XOR, NAND, NOR gibi işlemlerdir. NAND ve NOR işlemleri sırasıyla AND ve
13
OR işlemlerinin değillerine karşılık düşer, bu yüzden burada verilmeyeceklerdir. Ama
XOR işlemi aritmetik işlemlerde ve eşitlik karşılaştırmada çok kullanıldığından burada
açıklanması uygun olacaktır.
4. XOR İşlemi. Denetimli tümleme işlemidir. A ve B Boole değişkenleri olmak
üzere A XOR B = A + B ile gösterilir. Bu işlemi gerçekleyen kapının sembolik gösterimi
ve doğruluk tablosu Şekil 1.9 da verilmiştir. Doğruluk tablosundan görülebileceği üzere, A
= 0 iken çıkış A + B = B dir, tersine A=1 iken A + B = B dir. Buradan A değişkeni
sayesinde B değişkeninin tersinin alınıp alınmayacağı denetlenebilmektedir.
(a)
(b)
Şekil 1.9. (a) XOR kapısının sembolik gösterimi, (b) doğruluk tablosu.
XOR işlemi 1-bitlik iki sayının toplanmasında kullanılabilir. Doğruluk tablosundan
görülebileceği üzere, A = B = 1 olduğu zaman toplam 2 etmesine rağmen a+B = 0
olmuştur. Bu sonuç sayı tabanı çıkarılarak bulunmuştur ve elde doğurur. Diğer durumlarda
A+B değeri çıkış olarak alındığından, toplamı tam doğru olarak temsil etmektedir. XOR
kapısı aynı zamanda eşitlik karşılaştırıcıdır. Doğruluk tablosundan görüleceği üzere, A ve
B değişkenleri aynı değerli olduğu zaman çıkış 0, farklı olduğu zaman çıkış 1’dir.
1.3 BİLGİSAYARIN GENEL YAPISI
Basit bir sayısal bilgasayarın blok dyagramı Şekil 1.10 da gösterilmiştir. Merkezi
işlem birimi (CPU) çoğunlukla insan beynine benzetilir, çünkü burası tüm kararların
alındığı ve sistem zamanlamasının üretildiği yerdir. CPU’da bir aritmetik lojik birim
(ALU) vardır ve tüm matematiksel işlemler orada yapılır. Bu hesapların sonuçları
akumülatör adı verilen CPU içindeki özel bir kaydedicide saklanır.
Bu işi gerçeklemek için CPU’ya emretmek amacıyla kullanılan belirli bir komut
dizisini saklayacak bir bellek birimi kullanılmalıdır. Bu emirlere bilgisayar programı adı
verilir. Emirlerin işleyeceği veriler için bellekte yer ayrılır. Bu belleğe veri bellek adı
verilir.
14
Giriş/çıkış cihazları olmadan bilgisayarın çok yararlı iş yapması mümkün değildir.
Yapılacak işe ilişkin emirleri veya komutları bilgisayara girebileceğimiz cihaz klavyedir.
Sonuçları ise yazıcı veya CRT ekran üzerinde gözleriz.
Şekil 1.10. Basit bir bilgisayarın blok yapısı.
Program belleğin içeriği incelendiği zaman, bizim için anlamı olmayan bir sayılar
kümesi ile karşılaşırız. Ama CPU için bu sayıların anlamı büyüktür ve CPU’nun yürüteceği
işlemleri gösteren bir komut takımını temsil eder. Bu sayılar, CPU’nun emir takımındaki
çeşitli emirlere ilişkin işlem kodlarını (opcode) gösterir.
CPU, bellek, ve giriş/çıkış cihazlar birbirleriyle haberleşebilmelidir. Örneğin CPU
seçilecek bellek alanını belirleyebilmeli ve bu alana bilginin yazılacağını veya okunacağını
tanımlayabilmelidir. Bu iş adres, veri, ve denetim hatları sayesinde yapılır. CPU belirli bir
bellek alanının içeriğini okuyacağı zaman, ilk olarak o yerin adresini adres yoluna koyar.
Bu adres program sayıcının içeriğidir. Denetim hatları belleğe erişileceğini ve bellek
üzerinde örneğin okuma işleminin yapılacağını tanımlar. Bunun sonucunda seçilen bellek
alanın içeriği veri yolu üzerinden CPU’ya taşınır.
Bu üç yola sahip bilgisayar mimarisinin çalışmasına örnek olarak akumülatör
içeriğini dış cihaza (örneğin yazıcıya) gönderen bir emiri inceleyelim. Bu emirin icrasi,
yazıcı adresinin CPU tarafından adres yoluna koyulmasını gerektirir. Yazıcıya ait olan
adres kodçözücü bu adresi değerlendirerek CS hattını aktif yapar. Daha sonra akumülatör
içeriği veri yoluna koyulur, ve ardından yazma denetim işareti aktif yapılarak veri yolu
15
üzerindeki bilgi arayüz cihazına yazılmış olur. Arayüzün çıkışı aynı zamanda yazıcının
girişine uygulanmış olduğundan, bilgi yazıcıya iletilmiş demektir.
Adres, veri, ve denetim yollarının genişliği kullanılan CPU’ya bağlıdır. Emirleri 8bitlik verileri işleyebilen bir CPU’nun veri yolu genellikle 8-hatlı ve adres yolu 16-hatlı
olmaktadır. Denetim yolunun genişliği 8-bitlik CPU’larda bile değişik olabilir. Bu yol
CPU’yu tanımlayan bazı özel hatlar içerebilir. Ama her CPU’da ortak olan denetim hatları
vardır, örneğin okuma, yazma,...vs hatları gibi. Denetim hatlarının bir kısmı CPU’ya giriş
bir kısmı çıkıştır. Halbuki adres yolu sadece çıkış, veri yolu ise hem giriş hem de çıkış
olabilmektedir.
1.4 MİKROBİLGİSAYARIN PROGRAMLANMASI
1.
Makina ve Asembli Dili Programlama. Bütün bilgisayarlar ikili sayılar
kullanılarak programlanmalıdır. Ama bu programlama biçimi programcı açısından çok
hantaldır. Klavyeden girilen iki sayıyı toplayan bir Z80 mikroişlemci programı incelensin.
11011011
00000000
01000111
11011011
00000000
10000000
11010011
01000000
01110110
Bu programın çok açık olmadığı aşikardır. Ama Z80 işlemci için oldukça açıktır. Bu tüm
programa amaç kodu (object kodu) denir ve CPU’nun icra edebileceği yegane kodu içerir.
Ama programcının bu kodu kullanabilmesi hemen hemen imkansızdır.
Şimdi bu programın onaltılı tabanda kodlandığı düşünülsün.
DB
00
47
DB
00
80
D3
40
76
16
Elbette bu program daha okunabilir biçimdedir, ama programın görevi halen daha açık
değildir. Şimdi de bu onaltılı kodlara karşı düşen mnemonic
biçimler (emir işlem
kodlarının kısaltımı) kullanılsın.
İkili
Onaltılı
Mnenonic
11011011
DB
IN
00000000
00
01000111
47
11011011
DB
00000000
00
10000000
80
A,(OOH)
Açıklama
;
00 adresinden birinci
;
sayıyı A kaydedicisine gir.
LD B,A
;
A’nın B’de kopyasını oluştur.
IN
;
00 adresinden ikinci sayıyı
;
A kaydedicisine gir.
;
A ve B kaydedicilerini topla ve
A,(00H)
ADD A,B
sonucu A’da sakla
11010011
D3
01000000
40
01110110
76
OUT (40H),A
;
A’nın içeriğini kırk adresine
yaz
HALT
;
Dur.
Bu programın görevi şimdi oldukça açıktır. Birinci sayı 00 adresinden A
kaydedicisine girilir. Klavye bu 00 adresine bağlanmıştır. Üstüne yazma yapılmasın diye
birinci sayı A’dan B kaydedicisine taşınır. Daha sonra ikinci sayı klavyeden A
kaydedicisine girilir ve A ve B kaydedicilerinin içerikleri toplanır. Sonuç, monitörün bağlı
olduğu varsayılan 40 adresine gönderilir. En son emirle mikroişlemci durdurulur.
Mikroişlemci emirleri ikili, onaltılı, ve mnomonic biçimde gösterilebilir.
Kullanılan açıklamalar, programın yaptığı işi daha da netleştirir. Emirleri onaltılı biçimde
girerek bilgisayarın programlanması makina dili programlama olarak bilinir. Bazı
bilgisayarlar mnomonic biçimli emirler kullanılarak programlamaya izin verir. Buna da
Assembli dili programlama denir.
Assembli dili program kullanıldığı zaman Assembler adı verilen özel bir programa
ihtiyaç vardır. Assembler programı, Assembli dili kütüğün oluşumunu kolaylaştıran bir
cins editör ile birlikte verilir. Assembli dili kütüğe kaynak (source) kodu denir. Programın
kaynak kod uyarlaması tamamlanınca, mnemoniclerin ikili kod karşılıklarını bulmak için
assembler çağrılır ve amaç kod adı verilen yeni bir kütük oluşturulur. Bu kütük, belleğe
yüklenip icra edilebilecek ikili kod içerir.
17
Tuş takımından programın onaltılı biçimde girilmesine izin veren mikroişlemci
eğitici (trainer) sistemleri kullanıldığı zaman, girilen onaltılı sayıları mikroişlemcinin
değerlendirmesi nasıl mümkün olmaktadır sorusu akla gelebilir. Bunun cevabı Şekil 1.11
yardımıyla açıklanabilir. Bu devre 16-den -4’e kodlayıcıdır. Bu devre 16 farklı girişi
(0’dan F’ye kadar) alır ve bunların karşılığı olarak 0000-1111 arasında değişen 4-bitlik
çıkışlar üretir. Bu sayede veriler onaltılı biçimde bilgisayara girilse de, bilgisayar bu
verileri ikili biçimde almış olur.
Şekil 1.11. 16-dan-4’e kodlayıcı devre.
2.Yüksek-Seviyeli Diller. BASIC programlama dili en basit yüksek- seviyeli
programlama dilidir, ve bilgisayarlar ile birlikte verilmektedir. İki sayıyı toplayan program
BASIC dilinde yazılırsa,
10 INPUT N1,N2
20 PRINT “SUM = “; N1 + N2
30 END
18
elde edilir. Orijinal ikili programla karşılaştırılışı çarpıcıdır. Elbette bu durum tüm yüksekseviyeli dillerin amacıdır. Programcının kendi diline mümkün olduğunca benzeyen bir dille
bilgisayarla konuşması en arzulanan şeydir.
BASIC dilinde programlama, BASIC yorumlayıcı
veya derleyici
gerektirir.
Yorumlayan BASIC kullanıldığı zaman, uygulama programı, editör gerektirmeden belleğe
sokulabilir. Daha sonra RUN komutu verilmesi, BASIC deyimlerini yorumlayıcının
incelemesini ve ardından görevi gerçekleyecek makina kod dizisini icra etmesini sağlar.
Yorumlayıcı kullanmak çok yavaş program icrası ile sonuçlanabilir. Eğer bilgisayar
bir döngüye girerse, yorumlayıcı o döngüdeki emirleri defalarca yorumlamaya devam
edecektir.
Bilgisayar
çok
hızlı
olduğundan
bu
gecikme
programcı
tarafından
farkedilmeyebilir.
Yüksek-seviyeli dildeki programları amaç koda dönüştürmek için derleyici
kullanılabilir. Derleyici kullanmak assembler kullanmaya benzer, çünkü uygulama program
kütüğünü oluşturmak için bir editör kullanılmalıdır. Yüksek seviyeli diller, bilgisayar
donanımını ve emir takımını programcının bilmesini gerektirmez, ve böylece bu yükten
programcıyı kurtarır.
19

Benzer belgeler