Yalnız Mesajı Göster
  #3  
Eski 18-07-2006, 02:54 PM
empedoCles kullanıcısının avatarı
empedoCles empedoCles Çevrimdışı
Müdavim
 
Giriş: Sep 2005
Mesaj: 123
empedoCles İtibar düzeyini kapadı
16’lık sayı sistemi (hexadecimal numbering system) ve 8’lik sayı sistemi (octal system)


Bilgisayarların tamamen 2’lik sistemde çalıştığını söylemiştik, ama yukarıda görüldüğü gibi 2’lik sistemde sayıların ifade edilmesi hem çok uzun hem de zahmetli. Bu yüzden, yazım ve algılama kolaylığı sağlamak için 16’lık ve 8’lik sayı sistemleri de kullanılmaktadır.
16'lık ve 8’lik sayı sistemlerinde sayılar daha yoğun olarak kodlanıp kullanabilir.

Başta da söz edildiği gibi 10 luk sistemde 10, 2’lik sistemde ise 2 sembol bulunmaktadır. Bu durumda 16’lık sayı sisteminde de 16 sembol bulunur.

ilk 10 sembol 10'luk sistemde kullanılan sembollerle tamamen aynıdır :
1, 2, 3, 4, 5, 6, 7, 8, 9,

Daha sonraki semboller

A = 10
B = 11
C = 12
D = 13
E = 14
F = 15

16’lık sayı sisteminde yazılmış bir sayıyı 10’luk sisteme çevirmek için, en sağdan başlayarak basamak değerleri 16’nın artan kuvvetleriyle çarpılır :

01AF = (15 * 1) + (10 * 16) + (1 * 256) + (0 * 4096) = 431

10’luk sistemde yazılmış bir sayıyı 16’lık sisteme çevirmek için 10 luk sistemden 2’lik sisteme yapılan dönüşümlerdekine benzer şekilde sayı sürekli 16 ya bölünerek, kalanlar soldan sağa doğru yazılır.

Pratikte 16 lık sayı sistemlerinin getirdiği önemli bir avantaj vardır. Bu avantaj 16 lık sayı sistemi ile 2’lik sayı sistemi arasındaki dönüşümlerin kolay bir şekilde yapılmasıdır.

16’lık sistemdeki her digit 2’lik sistemdeki 4 bit (1 Nibble) alan ile ifade edilebilir :

0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = A
1011 = B
1100 = C
1101 = D
1110 = E
1111 = F

Örnek : 2ADFH sayısının (en sondaki H sayının hexadecimal olarak gösterildiğini anlatır yani sayıya ilişkin bir sembol değildir) 16'lık sistemde ifadesi :

2 = 0010
A = 1010
D = 1101
F = 1111

Bu durumda 2ADFH = 0010 1010 1101 1111

2’lik sistemden 16’lık sisteme yapılacak dönüşümler de benzer şekilde yapılabilir :
Önce sayıları sağdan başlayarak dörder dörder ayırırız (en son dört eksik kalırsa sıfır ile tamamlarız.) Sonra her bir dörtlük grup için doğrudan 16'lık sayı sistemindeki karşılığını yazarız.

1010 1110 1011 0001 = AEB1H
0010 1101 0011 1110 = 2D3EH

soru : 16'lık sayı sisteminde 2 byte'lık bir alanda yazılmış olan 81AC H sayısı pozitif mi negatif midir?
cevap : Sayının yüksek anlamlı biti 1 olduğu için, işaretli sayı sistemlerinde sayı negatif olarak değerlendirilecektir. (1001 0001 1010 1100)

16 bitlik bir alanda ve işaretli sayı sisteminde -1 sayısını nasıl ifade edebiliriz :
Cevap : FFFF

8’lik sayı sistemi (octal numbering system)

Daha az kullanılan bir sayı sistemidir.

8 adet sembol vardır. (0 1 2 3 4 5 6 7)
8’lik sayı sisteminin her bir digiti 2’lik sistemde 3 bit ile ifade edilir.

001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7

8'lik sayı sisteminin de kullanılma nedeni, 2'lik sayı sistemine göre daha yogun bir ifade tarzı olması, ve ikilik sayı sistemiyle, 8'lik sayı sistemi arasında yapılacak dönüşümlerin çok kolay bir biçimde yapılabilmesidir.
GERÇEK SAYILARIN BELLEKTE TUTULMASI

Sistemlerin çoğu gerçek sayıları IEEE 754 standardına göre tutarlar. (Institute of Electrical and Electronics Engineers) Bu standarda göre gerçek sayılar için iki ayrı format belirlenmiştir:

single precision format (tek hassasiyetli gerçek sayı formatı)

Bu formatta gerçek sayı 32 bit (8 byte) ile ifade edilir.
32 bit üç ayrı kısma ayrılmıştır.

1. İşaret biti (sign bit) (1 bit)
Aşağıda S harfi ile gösterilmiştir.
İşaret biti 1 ise sayı negatif, işaret biti 0 ise sayı pozitiftir.

2. Üstel kısım (exponent) (8 bit)
Aşağıda E harfleriyle gösterilmiştir.

3. Ondalık kısım (fraction) (23 bit)
Aşağıda F harfleriyle gösterilmiştir.

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
31 30-----------23 22-------------------------------------0

Aşağıdaki formüle göre sayının değeri hesaplanabilir :

V sayının değeri olmak üzere:

E = 255 ise ve F 0 dışı bir değer ise V = NaN (Not a number) bir gerçek sayı olarak kabul edilmez. Örnek :

0 11111111 00001000000100000000000 = Sayı değil
1 11111111 00010101010001001010101 = Sayı değil


E = 255 ise ve F = 0 ise ve S = 1 ise V = -sonsuz
E = 255 ise ve F = 0 ise ve S = 1 ise V = +sonsuz

0 < E < 255 ise

V = (-1)S * 2(E -127) * (1.F)

Önce sayının fraction kısmının başına 1. eklenir. Daha sonra bu sayı 2(E-127) ile çarpılarak noktanın yeri ayarlanır. Noktadan sonraki kısım 2'nin artan negatif kuvvetleriyle çarpılarak elde edilecektir. Örnekler :

0 10000000 00000000000000000000000 = +1 * 2 (128 - 127) * 1.0
= 2 * 1.0
= 10.00
= 2



0 10000001 10100000000000000000000 = +1 * 2 (129 - 127) * 1.101
= 22 * 1.101
= 110.100000
= 6.5


1 10000001 10100000000000000000000 = -1 * 2 (129 - 127) * 1.101
= -22 * 1.101
= 110.100000
= -6.5

0 00000001 00000000000000000000000 = +1 * 2 (1 - 127) * 1.0
= 2-126

E = 0 ve F sıfır dışı bir değer ise

V = (-1)S * 2(-126) * (0.F)

Örnekler :

0 00000000 10000000000000000000000 = +1 * 2-126 * 0.1
=

0 00000000 00000000000000000000001 = +1 * 2-126 0. 00000000000000000000001
= 2-149 (en küçük pozitif değer)

E = 0 ve F = 0 ve S = 1 ise V = -0

E = 0 ve F = 0 ve S = 0 ise V = 0


double precision format (çift hassasiyetli gerçek sayı formatı)

Bu formatta gerçek sayı 64 bit (8 byte) ile ifade edilir.
64 bit üç ayrı kısıma ayrılmıştır.

1. İşaret biti (sign bit) (1 bit)
Aşağıda S harfi ile gösterilmiştir.
İşaret biti 1 ise sayı negatif, işaret biti 0 ise sayı pozitiftir.

2. Üstel kısım (exponent) (11 bit)
Aşağıda E harfleriyle gösterilmiştir.

3. Ondalık kısım (fraction) (52 bit)
Aşağıda F harfleriyle gösterilmiştir.

S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
63 62------------------52 51-----------------------------------------------------------------------------0

Aşağıdaki formüle göre sayının değeri hesaplanabilir :

Aşağıdaki formüle göre sayının değeri hesaplanabilir :

V sayının değeri olmak üzere:

E = 2047 ise ve F 0 dışı bir değer ise V = NaN (Not a number) bir gerçek sayı olarak kabul edilmez.

E = 2047 ise ve F = 0 ise ve S = 1 ise V = -sonsuz
E = 2047 ise ve F = 0 ise ve S = 1 ise V = +sonsuz

0 < E < 2047 ise

V = (-1)S * 2(E -1023) * (1.F)

Önce sayının fraction kısmının başına 1. eklenir. Daha sonra bu sayı 2(E-1023) ile çarpılarak noktanın yeri ayarlanır. Noktadan sonraki kısım 2'nin artan negatif kuvvetleriyle çarpılarak elde edilecektir.

E = 0 ve F sıfır dışı bir değer ise

V = (-1)S * 2(-126) * (0.F)

E = 0 ve F = 0 ve S = 1 ise V = -0

E = 0 ve F = 0 ve S = 0 ise V = 0
imza

#include <middleeast.h>

#define ISRAELIS foul_beasts







Bu mesaj en son " 18-07-2006 " tarihinde saat 02:55 PM itibariyle empedoCles tarafından düzenlenmiştir....
empedoCles kullanıcısına MSN aracılığı ile mesaj yolla
Alıntı Yaparak Cevapla