Geri Git   ForumSinsi - 2006 Yılından Beri > Eğitim - Öğretim - Dersler - Genel Bilgiler > Eğitim & Öğretim > Matematik / Geometri

Yeni Konu Gönder Yanıtla
 
Konu Araçları
aritmetiği, bilgisayar

Bilgisayar Aritmetiği

Eski 10-29-2012   #1
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



Bilgisayar aritmetiği

Aritmetik mantık birimi

Aritmetik taşma

BCD kodu

Eşlik denetimi

Hamming kodu

Modulo işlemi

On altılı sayı sistemi

İkinin tümleyeni

İşaretle genişletme

Aritmetik mantık birimi

Aritmetik Mantık Birimi (AMB) aritmetik ve mantık işlemlerini gerçekleştiren bir dijital devredir AMB en basit işlemi gerçekleştiren mikro denetleyiciden, en karmaşık mikroişlemciye sahip bir bilgisayara kadar tüm işlemcilerin yapıtaşıdır Modern bilgisayarların içinde bulunan mikroişlemcilerin ve ekran kartlarının içinde çok karışık ve güçlü AMB?ler bulunmaktadır AMB kavramına ilk olarak 1945 yılında matematikçi John von Neumann EDVAC adlı yeni bir bilgisayar üzerine bulgularını anlatan raporunda değinmiştir



Genel AMB gösterim şekli: A ve B işlenen; R çıkış; F denetim biriminden gelen giriş; D ise durum bildiren çıkış

Ön gelişim

1946 yılında, Von Neumann ve meslektaşları Princeton Institute of Advanced Studies (IAS) için bir bilgisayar tasarlamaktaydıİlerleyen yıllarda bir çok bilgisayar tasarımı için prototip haline gelmiş olan bu bilgisayarda temel matematiksel işlemleri ( toplama, çıkarma, çarpma ve bölme) gerçekleştirme gerekliliğinden dolayı , Von Neumann işe yarar bir bilgisayarın bahsedilen işlemler için özelleşmiş bir yapıya ihtiyaç olduğuna inanıyordu ve buna bağlı olarak AMB?nin bir zorunluluk olduğunu belirtmiştir

Sayısal Sistemler

Bir AMB, işlemlerini diğer dijital devrelerin kullandığı sayı biçimiyle aynı şekilde ifade etmelidir Modern işlemcilerin tamamına yakını İkiye Tümleyen gösterimini kullanmaktadır İkiye tümleyen gösterimi işaretli ve işaretsiz sayıları kolay ve verimli bir şekilde gösterebildiğinden AMB?ler için işlem kolaylığı sağlamaktadır Eski bilgisayar ise birçok çeşitli sayı gösterim biçimi kullanmaktaydıBu bilgisayarlarda bire tümleyen,ikiye tümleyen,işaret büyüklüğü formatı ve hatta gerçek ondalık sistem gibi fonksiyonlar da bulunmaktaydı

Genel Bakış



XOR,VE,VEYA ve toplama işlemi yapan basit bir AMB şeması

İşlemciler birçok işlemi bir veya daha çok AMB ile gerçekleştirilir AMB veriyi giriş yazmaçlarından alır, işletir ve sonucu bir çıkış yazmacına kaydeder Kontrol birimi AMB?nin veriye hangi işlemi yapacağını seçer İşlemcinin diğer mekanizmaları yazmaçlar ve hafıza arasında verileri taşır

Şekilde görülen 2-bit AMB?nin A ve B isminde iki tane girişi bulunmaktadır A[0] & B[0] en anlamsız biti (basamak değeri en düşük biti), A[1] & B[1] en anlamlı biti (basamak değeri en yüksek biti) göstermektedir A ve B girişleri soldaki 4 tane mantık kapısına (yukarıdan aşağıya) yönlendirilmektedirler: XOR , VE, VEYA ve XORYukarıdaki 3 mantık kapısı XOR, VE ve VEYA işlemini gerçekleştirirken en son XOR kapısı tam toplayıcının (full adder) giriş kapısıdır Son adımda ise istenilen sonuç çoklayıcı yardımıyla seçilir Denetim biriminden gelen 3 bitlik işlem kodu (OP) çoklayıcıya hangi girişi seçmesini gerektiğini belirtir

İşlem kodu = 000 → XOR

İşlem kodu = 001 → VE

İşlem kodu = 010 → VEYA

İşlem kodu = 011 → Toplama

Çoklayıcının geri kalan 4 çıkışı farklı işlemler (çıkarma,çarpma vs) için boş durumda beklemektedirGelen elde(carry-in) ve çıkan elde (carry-out) bir çeşit durum yazmacına bağlanmıştır

1) Aritmetik Ve Lojik Ünite

İşlemci tarafından gerçekleştirilecek matematiksel ve mantıksal işlemlerin yapıldığı bölümdür

Aritmetik Lojik Ünitenin Yapısı



Sekil-1 Genel AMB blok yapısı

Bu birime giriş işlemleri, akümülatör kaydedicisiyle bellekten alınan veri arasında veya akümülatörle diğer kaydediciler arasında olabilir ALU? nun mikroişlemci içerisindeki basitleştirilmiş çalışma biçimi Şekil-2?de görülmektedir



Sekil-2 AMB'nin Mikroişlemci içinde çalışma biçimi

ALU işlemleri ADDER (toplayıcı) ve SHIFTER (kaydırıcı) denilen iki esas devre ile gerçekleştirilir Genelde, bu esas devreler ALU olarak anılmaktadır Ancak bilgileri depolayıcı ve değerlendirici bazı yardımcı devrelerden de yararlanılır Bu yardımcı devreler:

Akümülatör

Başlangıç ve sonuç bilgilerini depolamak için akümülatör kullanılır Bazı mikroişlemcilerde akümülatör yerine VERİ KAYDEDİCİ (data reg) kullanılmıştır

Geçici Kaydedici (Temporary Register)

Bellekten alınan işlem bilgilerinin ilk durak yeri: geçici kaydedicidir

Bayrak Kaydedici (Flag Register)

Bazı mikroişlemcilerde bayrak kaydedici yerine; ALU tarafından yapılan işlemlerin sonucunu gösteren ve bu sonuçları değerlendirme ortamını yaratan devredir Bu sonuçlara göre bazı düzeltmeler gerekiyorsa bilgisayar bunları kendi kendine yapabildiği gibi bayrak ekrana çağrılarak bazı yarılarının dışarıdan yapılması da mümkün olmaktadır Durum kaydedici veya Koşul kodu kaydedici değimleri de kullanılır Aritmetik lojik işlem birimi ve bu yardımcı devrelerinin tümüne birden ALU gurubu denir Yalnızca ALU denildiğinde ise asıl işlem yürütücü kısım olan ADDER ve SHIFTER amaçlanır

Kontrol Birimi

İşlemciye gönderilen komutların çözülüp (komutun ne anlama geldiğinin tanımlanması) işletilmesini sağlar İşlemci içindeki birimlerin ve dışındaki birimlerin eş zamanlı olarak çalışmasını sağlayan kontrol sinyalleri bu birim tarafından üretilir

Aritmetik Lojik Ünitenin İşlevleri

Aritmetik işlemler denilince başta toplama, çıkarma, bölme ve çarpma; mantık işlemleri denilince AND, OR EXOR ve NOT gibi işlemler akla gelir Komutlarla birlikte bu işlemleri, mantık kapılarının oluşturduğu toplayıcılar, çıkarıcılar ve kaydıran kaydediciler gerçekleştirirler Bloklaştırılmış bu devreler bir dâhili veri yolu vasıtasıyla birbirlerine, bir başka veri yolu ve tamponlar vasıtasıyla kaydedicilere ve zamanlama-kontrol birimine bağlanmıştır

ALU? da gerçekleşen bütün bu işlemler kontrol sinyalleri vasıtasıyla Zamanlama ve Kontrol Biriminin gözetiminde eşzamanlı olarak yapılır Mikroişlemcinin temel elemanlarından biridir ALU iki parçadan oluşur: Aritmetik ve Lojik üniteler

a) Aritmetik ünite: Toplama, çıkarma, artırma, azaltma gibi işlemleri yapar

b) Lojik ünite: AND, OR, NOT gibi işlemleri gerçekleştirir



Sekil-3 AMB'de gerçekleşen Aritmetik ve Lojik İşlemler

Temel İşlemler

AMB?lerin çoğu aşağıdaki işlemleri gerçekleştirebilir

Toplama,çıkarma ve bazı durumlarda çarpma ve bölme işlemleri (çarpma ve bölme AMB?nin bir birimi olacağı gibi AMB?den bağımsız bir birimde olabilirAMB?de ne kadar çok birim varsa yapısı da o kadar karmaşık olmaktadır)

Mantıksal işlemler: (VE, DEĞİL, VEYA, ÖZELVEYA)

Bit kaydırma işlemleri Bir sayıyı belirtilen bit sayısı kadar sağa veya sola, işaret genişletilerek veya genişletilmeyerek, kaydırmak veya döndürmekKaydırmalar sayıyı 2 ile çarpma veya bölme olarak da düşünülebilinirÇarpma ve bölme işlemlerinde olduğu gibi bu işlemlerde AMB?den bağımsız birim tarafından üstlenilebilir

Karmaşık İşlemler

AMB?ler herhangi bir işlemi yürütecek şekilde tasarlanabilir fakat işlem ne kadar karmaşıksa maliyet artar Bu maliyet işlemcide kullandığı yer, harcadığı enerji vs olabilir Bu sebepten dolayı bir AMB tasarlayıcısı, tasarımın işlemi istenen hızda yapmasını temin ederken, bu tasarımın uygulama esnasındaki karmaşıklığı ve sarfiyatı ile ilgili ödünleşimi de yapması gerekir Örneğin bir sayının karekökünü alacak bir AMB tasarlandığını düşünelimİlgili mühendisin önünde aşağıdaki seçenekler bulunmaktadır:

Çok fazla karmaşık bir devre tasarlayarak, tek basamakta karekökü hesaplayan bir AMB olabilirBuna ?tek vuruşluk hesaplama (calculation in single cycle)? denir

Çok karmaşık bir devre tasarlayarak, karekökü birkaç basamakta hesaplayan bir AMB olabilirBurada ki fark basamakların arasındaki geçici sonuçlar arka arkaya dizilmiş devrelerden geçerek her basamakta var olan sonuca yeni bir işlem uygulanarak nihai sonuca ulaşılması işlemidirBunu bir üretim bandına benzetebilirizBu sayede AMB aynı anda birkaç sayının karekökünü işleme alabilirAMB?de bulunan basamak sayısı kadar sayı işlenmeye başladıktan sonra her adımda bir sonuç dışarı çıkar ve böylece AMB dolduktan sonra tek vuruşluk işlem yapandan farkı kalmazBu tip işleme ?boru hattı ile hesaplama? denmektedir

Karmaşık bir devre tasarlayarak karekök işlemini değişik basamaklarda hesaplayan bir AMB olabilir Buna ?etkileşimli hesaplama? denmektedir ve genelde mikroprogramlama ile yapılmış karmaşık bir denetim birimi ile gerçekleştirilir

İşlemcide basit bir AMB bulundurulur, yukarıdaki seçeneklerden herhangi birini gerçekleştiren yardımcı bir ikinci işlemci, ayrıca ve daha pahalı bir şekilde sisteme eklenebilecek halde satılabilir

Programcılara yardımcı ikinci bir işlemci veya emülatör bulunmadığını söyleyerek, kendi algoritmalarını yazmalarını söylemekBu işlem yazılım kütüphanelerinin var olma nedenidir

Yardımcı işlemcinin varlığı taklit edilerek, program her karekök işlemini gerçekleştirmek istediğinde eğer varsa yardımcı işlemciyi kullanması, yoksa bir kesme yaratarak işletim sistemini karekök işlemini herhangi bir yazılımla gerçekleştirmesi yönünde uyarması şeklinde bir çözüm olabilir Buna yazılım taklidi denir

Yukarıdaki seçenekler en hızlı ve pahalıdan en yavaş ve en ucuza doğru gitmektedirEn basit bilgisayar dahi en karmaşık formülü gerçekleştirebilir fakat basit bilgisayarın var olan işlemi yavaş gerçekleştirmesinin nedeni ,yukarıda belirtilen seçeneklerde olduğu gibi, işlenmesi gerek basamak sayısının artmasıdır Intel Core veya AMD64 gibi güçlü işlemcilerde çok karmaşık AMB?ler bulundurmak mümkün olduğundan; basit işlemler için 1 seçenek, çoğu karmaşık işlemler için 2 seçenek ve aşırı karmaşık işlemler için 3 seçenek kullanmaktadır

Giriş ve Çıkış

AMB?nin girişleri işlenecek veriler ve denetim biriminden gelen hangi işlemin yapılacağını belirten değerlerdirÇıkışı ise yapılan işlemin sonucudur Çoğu AMB tasarımında belirli durumlara göre farklı değerler alan bitler bulunmaktadır bunlara bayraklar denir Bu bayraklar elde ,taşma, sıfıra bölme vs gibi olabilir ve AMB?ye giriş ya da çıkış olabilir
Kayan nokta birimi

Kayan nokta birimi de AMB gibi iki değer arasında belirli işlemleri gerçekleştirir fakat üzerinde çalıştığı değerler ikiye tümleyen ,BCD?den daha karmaşık olan kayan nokta gösterimine sahip değerlerdir Bu işlemleri gerçekleştirmek için kayan nokta biriminin de içinde AMB?ler bulunabilir Genel olarak mühendisler ikiye tümleyen, BCD gibi formatlara sahip tam sayı ile aritmetik işlemler yapan birimlere AMB ismini vermektedir Kayan nokta veya karmaşık sayı gibi daha çok bitle gösterilen biçimlerle işlem yapan birimlere daha yaratıcı isimler verilmektedir

Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #2
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



Aritmetik taşma
Mantık devrelerinde taşma, devrenin sağladığı bit alanının işlem sonucunda ortaya çıkan verinin elde bulunan saklama alanına sığmaması durumunda olur

Taşma (Overflow)

İkiye tümleyen (two’s complement) biçiminde tutulan tüm sayılarda bir sınır vardır 4 bitlik bir tamsayıyı ikiye tümleyen biçiminde gösterirken temsil edilebilen en büyük tamsayı değer 7 (0111), en küçük tamsayı değer ise -8 (1000)’dir Bu şekilde 9’u göstermek mümkün değildir, yani dörder bitlik gösterimde var olan 5 (0101) ve 4 (0100) sayılarının toplamını 4 bitle göstermek mümkün değildir

0101 + 0100 = 1001

Örnekte de görüldüğü gibi cevap 4 bitlik gösterimde -7 olur Bu duruma daha birçok örnek verilebilir Karşılaşılan bu probleme Taşma (Overflow) adı verilir Taşma, hesaplama sonucunda gösterilebilir alanın dışına bir değerin düşmesiyle ya da işaret bitinin (sign bit) toplama sonucu değişmesiyle meydana gelebilir

İkiye tümleyeni kullanırken bu durum iki pozitif tamsayıyı ya da iki negatif tamsayıyı kendi aralarında toplarken oluşabilir İki durumda da sorun sonucun işaret bitini kontrol ederek saptanabilir Pozitif sayıların toplamının negatif olarak ve negatif sayıların toplamının pozitif olarak ortaya çıkmasından Taşma olduğu anlaşılabilir Fakat sayı işaretsiz (unsigned) olduğunda bu yöntem kullanılamaz İşaretsiz tamsayılar genellikle taşmanın yok sayıldığı bellek adreslerinde kullanılır Bilgisayar tasarımcısı taşmanın hangi durumlarda tespit edilip hangilerinde yok sayılacağını önceden belirlemelidir MIPS’in bunun için sunduğu iki çözüm vardır:
( MIPS yapısı )

Add (add), add immediate (addi) ve subtract (sub) taşmaya neden olabilir
Add unsigned (addu), add immediate unsigned (addiu) ve subtract unsigned (subu) taşmaya neden olmaz

C programlama dilinde taşma yok sayıldığından dolayı, MIPS C derleyicileri değişken türleri ne olursa olsun aritmetik işlemlerin işaretsiz versiyonları olan addu, addiu ve subu’yu kullanır MIPS Fortran derleyicileri ise aritmetik işlemleri işlenenlerin (operands) türüne göre seçer

Tabii ki günümüzde birçok bilgisayar burada verilen örneklerden çok daha uzun bit örüntüleri (bit pattern) kullandığından daha büyük değerler sorunsuz, taşma olmadan toplanabilir ve saklanabilir Bugün bilgisayarlarda genellikle kullanılan 32 bitlik örüntülerde ikiye tümleyen biçiminde pozitif değerler için 2147483647’ye kadar değer tutulabilir ( Bilgisayar mimarisi ) Eğer daha büyük değerler gerekirse daha uzun bit örüntüleri kullanılabilir veya ölçüm değerleri değiştirilebilir Örneğin ölçümleri santimetre yerine metre olarak yapmak hem daha küçük değerler kullanılmasını sağlar hem de halen gereken hassaslığı ve isabetliliği sağlar

Önemli olan nokta bilgisayarların hata yapabilir olduğudur Bilgisayar kullanıcıları bu tehlikeden haberdar olmalıdır Bu sorun genellikle, programcılar ve kullanıcılar tarafından bilinmeden kayıtsızlıkla karşılanır ve küçük sayılardan çok büyük sonuçlar ortaya çıkabileceğini görmezden gelinir Örneğin, bilgisayarların genellikle 16 bitlik oldukları dönemde ikiye tümleyen biçiminde işlem yapan bilgisayarlarda gösterilebilir en büyük değer olan 215 = 32768’e ve daha büyük değerlere ulaşıldığında taşma meydana gelirdi 19 Eylül 1989 günü bir hastanenin bilgisayar sistemi uzun süren bir hizmet döneminden sonra beklenmeyen bir hata meydana getirdi Bunun nedeni arızanın oluştuğu tarihin 1 Ocak 1900 tarihinden 32768 gün sonrasına denk gelmesiydi ve makinenin tarih hesaplama sistemi 1 Ocaktan başlamak ve geçen gün sayısına göre tarih hesaplamak üzerine tasarlanmıştı Sonuç olarak 19 Eylül 1989 günü taşma yüzünden negatif bir sonuç ortaya çıktı ve bilgisayar bu sorunu kontrol altına alabilecek şekilde bir donanıma ve yazılıma sahip değildi

Üstten taşma

Kayan Nokta aritmetiğinde taşma iki türlü meydana gelebilir Bu türler overflow ve underflow olarak adlandırılır
Overflow: Pozitif bir üstün üst (exponent) alanına sığmayacak kadar büyük hale gelmesi durumuna verilen isimdir
Underflow: Negatif bir üstün üst (exponent) alanına sığmayacak kadar büyük bir hale gelmesi durumuna verilen isimdir

Kırpma (Truncation) Hataları

Rahatsız edici başka bir problemse, 1 baytlık kayan nokta sisteminde örnek olarak 2 5⁄8 ‘in saklanması istendiğinde ortaya bir sorun çıkacaktır İlk önce 2 5⁄8 ikilik sistemde yazıır; 10,101 Fakat bu ondalık(mantissa) alanına kopyalanırsa kullanılabilir alanın dışına taşmak gerekir Bu durumda en sağdaki en anlamsız bit (least significant bit) dışarıya atılır ve kaybolur Bu 1⁄8’lik bir büyüklüğün kaybolması anlamına gelir



Bu sorun görmezden gelinip üst alanı ve işaret biti doldurulursa elde edilen sonuç 01101010 olur yani 2 5⁄8 yerine 2 1⁄2 elde edilmiş olur Bu duruma Kırpma (truncation) hatası adı verilir ve sonucunda ondalık alanının yeteri kadar geniş olmamasından kaynaklı olarak değerin bir kısmı kaybolur

Bu durumda 2 1⁄2 + 1⁄8 + 1⁄8 sonucu bulunmak istendiğinde değerler yazıldığı sırayla toplanırsa 2 1⁄2 + 1⁄8 sonucu olarak 2 5⁄8 yani ikilik sistemde 10101 elde edilir Daha önceden de görüldüğü gibi bu değer doğru olarak tutulamaz Eklenilen 1⁄8 değeri hiç eklenmemiş gibi ortadan kaybolur Sonuç olarak gelen 2 1⁄2’ye son 1⁄8 de eklediğinde yine aynı sorundan dolayı son sonuç olarak 2 1⁄2 elde edilir Fakat değerler tersten sıralanıp toplanırsa bu sorun çözülebilir 1⁄8+ 1⁄8 = 1⁄4, yani ikilik sistemde 01 sonucu elde edilir İlk aşamanın sonucu bir baytta 00111000 olarak isabetli şekilde saklanır Bu değer 2 1⁄2 ile toplanırsa 2 3⁄4 sonucu elde edilir Yani bir baytta isabetli olarak 01101011 bu sefer doğru olan sonuç tutulabilir

Özetlemek gerekirse kayan nokta biçiminde nümerik değerler eklenirken kullanılan sıralama sonucun doğru olması açısından önemlidir Bu biçimde çok büyük bir sayıya çok küçük bir sayı eklenirse küçük sayı kırpılmış (truncated) olabilir Sonuç olarak değerleri birbirine eklemek için genel kural küçük olan değerler büyük değerin yanında kaybolmayacakları umularak bir araya toplanır ve kalan büyük değerle son olarak toplama işlemi yapılır

Bu tür sorunların önemi daha uzun ondalık alanı kullanılarak azaltılabilir Aslında bugün birçok bilgisayar burada gösterilen 8 bit yerine 32 bit veya daha fazlasını kullanır Bu aynı zamanda daha uzun bir üst alanını kullanılabilir hale getirir Bu uzunluktaki formatlarda bile halen daha isabetli sonuçlara ihtiyaç duyulabilir

Günümüzde ticari yazılım paketi tasarımcıları bu konuda eğitimsiz kullanıcıları bu durumdan korumak adına iyi işler ortaya koymaktadırlar Standart bir hesap tablosu (spreadsheet) sisteminde 1016 ve daha fazla farklar olmayan sayılarda doğru cevaplar alınması beklenir Sonuç olarak, 10000000000000000’e 1 ekleme ihtiyacı duyulursa 10000000000000001 yerine 10000000000000000 cevabı alınabilir

Bu tür problemler genellikle basit kullanıcılar için büyük sorunlar teşkil etmez fakat hassasiyet uçak ve gemi sistemleri, uzay araştırma araçları gibi sistemler için son derece önemli olabilir

Başka bir kırpma hatası sebebi ise gündelik hayatta kullanılan on tabanında her zaman ortaya çıkan bir problemdir: örneğin 1⁄3' ün desimal biçimde gösterilmesinde karşılaşılan ondalığın sonsuza gitmesi (nonterminating expansions) problemi Bazı değerler burada olduğu gibi kaç bit kullanılırsa kullanılsın tam olarak ifade edilemez On tabanı ve ikilik (binary) gösterim arasındaki fark ikilik gösterimde daha fazla sonsuza giden değer vardır Örneğin 0,1 ikilik sistemde tam olarak ifade edilemez Buna sorun teşkil eden bir örnek vermek gerekirse dolar ve sentlerle çalışan, bu durumdan habersiz bir insanın karşılaşacağı birçok sorun vardır Özellikle dolar genel birim olarak kullanılıyorsa “dime” isabetli olarak saklanamaz Bu durumda genel birim olarak peni kullanılmasıyla bütün değerlerin tamsayı olması ve daha isabetli sonuçlar elde edilmesi sağlanabilir

Sonuç

Taşmayla başa çıkmanın birkaç yolunu bir araya toplamak gerekirse:

Tasarım: uzunluk ve işaret tipi bakımından uygun veri türleri seçmek
Sakınma: işlem ve işlenenlerin seçiminde elde edilebilecek sonucun asla saklanabilecek sonuçtan daha uzun olmayacağına emin olmak
Kontrol etme: eğer taşma olacağı önceden tahmin edilirse veya tespit edilirse önce başka bir işlem yapılır Örneğin önce küçük olan girdiler toplanır arkasından daha büyük değerlerle toplanır İşlemciler genellikle bir ek özellik olarak bir statü biti kullanarak taşmaları tespit edip önleyebilirler
Yayılma: eğer verilen değer tutulmak için çok büyükse taşma olduğu belirtilerek özel bir değere atanabilir Üzerinde yapılacak işlemler uygulandıktan sonra bu değer döndürülür Bu yöntem değerin uzun işlemler sonunda her aşamada kontrol edilmesindense bütün işlemler bitince kontrol edilebilmesine olanak sağlar Bu özellik genellikle FPU adı verilen kayan nokta donanımlarıyla(Floating point hardware) desteklenir
Yok sayma: en fazla tercih edilen yoldur fakat yanlış sonuçlar verebilir ve programın güvenilirliğini tehlikeye atabilir

Sıfıra bölünme bir taşma değildir Matematiksel olarak sıfıra bölünme tanımsızdır

Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #3
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



BCD Kodu

BCD Kodu, bilgisayar sistemlerinde ikili kodlanmış onlu (binary coded decimal) sayı sistemi, onluk tabandaki sayıları ikilik tabana kodlama anlamına gelen bir sayısal kodlama metodudur Onluk sistemdeki 0 ile 9 arası rakamların 4 bit ile (ikilik sistemde) ifade edilmesidir

Onluk İkilik BCD(8421)

0 0000 0000

1 0001 0001

2 0010 0010

3 0011 0011

4 0100 0100

5 0101 0101

6 0110 0110

7 0111 0111

8 1000 1000

9 1001 1001

10 1010 0001 0000

11 1011 0001 0001

12 1100 0001 0010

13 1101 0001 0011

14 1110 0001 0100

15 1111 0001 0101



Tablodaki 8421 ifadesi ikili sistemdeki basamakları (23222120) göstermektedir

BCD'de 4 bit 1010-1111 arası gösterim geçerli değildir İki veya daha fazla basamaktan oluşan onluk sayılar için tek basamaklı onluk sayıların ikilik kodları yan yana yazılır

(39)10 = (0011 1001)BCD

BCD kodlamanın en yüksek basamak ağırlığı (23) 8, üçüncü basamak (22) 4, ikinci basamak (21) 2 ve en düşük basamak ağırlığı (20) 1 olarak belirlenmiştir Bu kodlama her bir onluk sistemdeki (decimal) sayının dört bitlik karşılığı yazılarak tamamlanır

Binary ile BCD'nin karşılaştırılması:

- BCD kodlama ikilik sistemden daha verimsizdir Örneğin, (10)10 sayısını gösterebilmek için BCD'de 8 bit gerekirken binary sistemde 4 bit yeterlidir

- BCD'de aritmetik işlemler karmaşıktır

- Sayıların BCD'den onluk sisteme, onluk sistemden BCD'ye çevrimi ikilik sisteme göre daha kolaydır

Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #4
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



Eşlik denetimi
Hata tespiti, veri iletimi sırasında farklı nedenlerle bozulan veriyi tespit etme işlemidir Hata tespiti için günümüze kadar birçok yöntem geliştirilmiştir

Eşlik denetimi,
İki boyutlu eşlik denetimi,
Sağlama,
CRC_(Döngüsel_Artıklık_Denetimi) vb

Yöntemlerin hemen hemen hepsinde veriye hata tespiti amacı ile bilgi eklenmektedir Eşlik denetimi gönderilecek veriye sadece bir bitin eklendiği oldukça basit bir yöntemdir

Parity Check bir bitstream'in tüm bitlerinin toplamının tek veya çift olmasına göre ayrı bir parity bit tutup bunla datayı kıyaslayarak güvenliğini kontrol eden yöntemdir Parity'ye sahip ram'ler dışında, async bağlantı protokollerinin bazılarında da kullanılır Mesajın karşıya hatasız iletilip iletilmediğini anlamak için kullanılan bir mekanizmadır Her bitin xorlanmasıyla elde edilir Sonuç 1 çıkarsa odd parity, 0 çıkarsa even paritydir

çift eşlik,
verinin tüm bitlerinin Xor işleminden sonra değili (not) alınarak hesaplanmaktadır
tek eşlik
verinin tüm bitleri Xor (exclusive or) işlemine tabi tutulur

Örnek:

Tek eşlik biti: Çift eşlik Biti:
Veri : 0110 0110
Eşlik bitinin hesaplanması: 0^1^1^0 = 0 ~(0^1^1^0) = 1
Gönderilecek veri: 01100 01101


Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #5
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



Hamming kodu
Telekomünikasyonda, ismini yaratıcısı Richard Hamming’den alan, doğrusal hata düzelten bir koddur Hamming Kodu sadece tek bitlik hatayı saptayıp düzeltebilir İki bitlik bir hatayı sadece saptayabilir ama düzeltemez Buna karşın, basit eşlik kodu iki bitin transpoze olduğu yerde hata bulamaz; bulsa da düzeltemez

Tarihçe

Hamming 1940’larda Bell Laboratuarları’nda manyetiksel röle bazlı, zaman döngüsü saniye olan Bell Model V adlı bir bilgisayarda çalışmıştır Giriş hataları okunabilen punch kartlarına yüklenirdi Günler boyunca özel kodlar hataları bulur ve ışık yakardı ki operatörler problemi düzeltsin Mesaiden sonraki periyotlarda ve hafta sonlarında, operatörler olmadığından makine diğer işlemlere geçerdi Hamming hafta sonları çalışırdı ve kart okuyucunun güvenilmez olduğundan programlarına ilk satırdan başlamak zorunda kalması onu deli ediyordu Yıllar içinde hata düzeltme problemi üzerinde çalışarak çok güçlü bir dizi algoritma yarattı 1950 yılında bugünkü adıyla aynı olan ve hala kullanılan Hamming Kodu'nu yayımladı
Hamming'den Önceki Kodlar

Hamming kodundan önce birkaç basit hata düzeltici kod kullanılmıştır Ama aynı genel uzayda Hamming'in tekniğinden daha başarılı değillerdi
Eşlik

Eşlik verilerdeki 1 numaralı bitin tek veya çift olduğunu anlamaya yarayan bir bit ekler Tek bir bit iletim anında değişirse, eşlik değişir ve hata o noktada bulunabilir Eşlik değeri 1 olursa verideki 1'lerin sayısı tektir, 0 ise çifttir Yani veri ve eşlik bitleri bir arada çift sayıda 1’e sahip olmalıdır Eşlik denetimi çok sağlam bir yöntem değildir Çünkü değişen bit sayısı çift olduğunda, kontrol biti doğru olacak ve hata görülmeyecektir Dahası eşlik biti hangi bitin değiştiğini veya hata bulundurduğunu da anlamayacaktır Veri tamamen çöpe atılmalıdır veya en baştan gönderilmelidir Gürültülü iletim ortamında veri iletiminin başarılı olması çok uzun zaman alır ya da hiç olmaz Eşlik denetimi çok iyi olmasa da, sadece bir bitin kaybolduğunda yerine konmasını sağlayabilir Bunun için de hangi bitin kaybolduğunun bilinmesi gerekir
Beşin İkisi Kodu

1940’larda Bell beşin ikisi diye bilinen biraz daha karmaşık bir kod kullanmıştır Bu kod bütün beş bitlik bloklarda iki tane bir olduğunu, blokta iki tane bir yoksa bir hata olduğunu gösterir Beşin İkisi Kodu halen bir bitlik hataları bulabilir Ama bir bit 1'den 0'a, başka bir bit 0'dan 1'e dönerse hata bulunamaz
Tekrarlama

Kullanılan başka bir kod ise her veri bitinin birkaç kere tekrar edilerek doğru olduğunun ve doğru transfer edildiğinin garanti edilmesi üzerine kuruludur Mesela gönderilen veri 1 olsun n = 3 tekrar için 111 gönderilir Bu üç bitten biri farklı ise hata oluşmuş demektir Kanal yeterince temiz ise, çoğu seferde üçlünün sadece bir biti farklı olacaktır 001, 010 ve 100 sıfıra; 110, 101 ve 011 bire tekabül edecektir ki bu sayılar orijinal bit için oy gibidir Bu özelliği taşıyan ve orijinal mesajı hatalarını fark ederek yeniden yazabilen bu kodlara hata düzelten kod denir Ama bu kodlar her hatayı düzeltemez Bizim örneğimizde 2 biti değiştirirsek alıcı 001 elde eder Sistem hatayı görür ama orijinal bitin 0 olduğu sonucuna varır ki bu da yanlıştır Her biti kopyalama sayımızı artırırsak mesela 4 kez, bu sefer bütün 2 bitlik hataları bulabilir ama düzeltemeyiz 5 kereye çıkarırsak 2 bitlik hataları düzeltebiliriz ama 3 bitlik hataları düzeltemeyiz Dahası, tekrar kodu çok verimsizdir Bizim örneğimizde bir kerede gidecek biti üç kere gönderecek zaman kaybına yol açmıştır Tekrar sayısı arttıkça verim katlanarak düşecektir

Hamming Kodları

Hamming Kod Hesapları

Bir mesaj içinde daha fazla hata düzelten bit olursa, bu bitler değişik yanlış bitlerin oluşturduğu değişik hataları bulabilecek şekilde ayarlanabilirse, kötü bitler bulunabilir Yedi bitlik bir mesajda yedi olası hatalı bit vardır Üç tane kontrol biti hatayı bulmakla kalmaz, yerini de saptayabilir

Hamming olan kodlama sistemlerinin, beşin ikisi dâhil, üzerinde çalışıp, bu fikirleri genelleştirmiştir Başlangıç olarak sistemi açıklamak için bir terminoloji yaratmıştır Bu terminoloji içinde veri bitleri sayısı ve hata düzelten bitlerin bulunduğu blokları da kapsar Örnek olarak, eşlik içerisinde her veri sözcüğü için tek bit bulundurur ASCII karakterlerinin 7 bit olduğunu varsayarsak, Hamming (8,7) kodu, toplamda sekiz bit, yedisi veri olmak üzere tanımlamıştır Tekrarlama örneği bu kurama göre olacaktır Bilgi oranı, ikinci sayının birinciye bölünmesiyle bulunur

Hamming iki ve daha fazla bitin değişmesi problemini uzaklık olarak tanımlamıştır (Halen “Hamming uzaklığı” olarak bilinir) Eşlik, herhangi iki bit değişimi görülmez olunca, uzaklık “2” olur

Hamming bu uzaklığı ve bilgi oranını olabildiğince artırmaya çalışmıştır 1940’lar boyunca var olan kodlar üzerinde önemli iletmeler gerçekleştiren birkaç kod yöntemi geliştirmiştir Bütün sistemlerin anahtar noktası eşlik bitlerinin bütün bitlerin ve verinin üzerinden kontrol ederek geçmesidir

Örnek Hamming Kodu Kullanımı

0110101 yedi bitlik veri sözcüğümüz olsun Hamming Kodların nasıl hesaplandığı ve hatayı nasıl buldukları aşağıdaki tabloda gösterilmiştir Data bilgileri için d, eşlik bitleri için p kullanılmaktadır İlk olarak veri bitleri uygun yerlere konur ve eşlik bitleri her seferinde çift eşlik kullanılarak hesaplanır

Hamming Kodunda Kullanılan Eşlik bitlerinin Hesaplanması
p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7
Veri (eşlik biti olmadan): 0 1 1 0 1 0 1
p1 1 0 1 0 1 1
p2 0 0 1 0 0 1
p3 0 1 1 0
p4 0 1 0 1
Veri (eşlik bitiyle birlikte): 1 0 0 0 1 1 0 0 1 0 1

Yeni veri sözcüğümüz (eşlik biti ile) 10001100101 olmuştur Son bitin hatalı olduğunu farz edelim ve bu bit 1’den 0 ‘a değişmiş olsun Yeni veri sözcüğümüz 10001100100'dır ve bu sefer Hamming Kodun nasıl elde edildiğini çift eşlik biti her hata sapladığında, eşlik bitini 1 olarak değiştirip analiz edelim

Eşlik bitlerinin Denetlenmesi (değişmiş bit koyu renkli)
p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 Parity check Parity bit
Alınan veri sözcüğü: 1 0 0 0 1 1 0 0 1 0 0
p1 1 0 1 0 1 0 Kalır 1
p2 0 0 1 0 0 0 Kalır 1
p3 0 1 1 0 Geçer 0
p4 0 1 0 0 Kalır 1

Son adımda her eşlik bitinin değerini ölçelim Değerin sayı karşılığı 11 çıkar Yani 11 biti hatalıdır ve değiştirilmesi gerekir

p4 p3 p2 p1
İkilik tabanda 1 0 1 1
Onluk tabanda 8 2 1 Σ = 11



11 biti değiştirmek 10001100100'ı tekrar 10001100101 yapar Hamming Kodlarını çıkartınca geriye orijinal veri sözcüğümüz 0110101 kalır Bir eşlik biti hatalı olur, diğerleri doğru olursa sorudaki eşlik biti yanlıştır ve kontrol ettiği bitler de hatalı olacaktır

Son olarak, x ve y konumlarındaki iki bit yer değiştirmiş olsun x ve y ikilik gösterimlerinin 2k konumlarındaki bitleri aynı ise, o konuma tekabül eden eşlik biti ikisini de kontrol eder ve aynı kalır x≠y olan bazı eşlik bitleri yüzünden bu konumlara tekabül eden bitler değişir Sonuçta Hamming Kodu iki bitlik hataları bulur ama bunları bir bitlik hatalardan ayırt edemez

Hamming(7,4) Kodu

Günümüzde Hamming Kod, spesifik olarak Hamming’in 1950 yılında gösterdiği bir (7,4) kodla ilgilidir Hamming Kodu her 4 bitlik mesaja 3 kontrol biti ekler Hamming’in algoritması bir bitlik hatayı bulup düzeltir ve iki bitlik hatayı tespit edebilir Orta durum nakillerinde, hatalar çok değilse Hamming Kodu efektiftir

Hamming matrisleri

Hamming kodlar, Hamming Matrisleri adı verilen matris çarpımlarının eşlik biti fikrinin genişlemesiyle çalışır Hamming (7,4) kodu için birbiriyle alakalı kod yaratıcı matris G ve eşlik denetleyicisi matris H kullanılır

G matrisinin ilk 4 sırası 4x4 birim matrisi I4, son 3 sıra ise 4 kaynak bitinden 3 eşlik bitine 4x3’lük matrisi gösterir G’nin sütun vektörleri H’nin çekirdeğinin temelini oluşturur Çarpım yapılırken birim matris veriyi iletir Yukarıdaki açıklamadan farklı olarak, veri bitleri ilk 4 konumdayken, eşlik bitleri son 3 konumdadır Bu matrisler gerçek Hamming matrislerinden farklı olsa da, bunlar Hamming Kodu daha kolay anlaşılır hale getiren gerekli detaylardır

Benzer olarak H’nin 3 sütunu 3x3 birim matris I3’ü gösterirken, ilk 4 sütun kaynak veri bitleri ve eşlik denetleyicilerinden oluşan 4x3 matrisi verir 4 blokluk yararlı veri bitini ve birikmiş diğer 3 göz ardı edilmiş biti kullanırız (4+3=7 (7,4)) Veriyi göndermek için göndermek istediğimiz veri bloğunu vektör olarak düşünürüz Mesela 1011 için:

Kanal kodlama

Diyelim ki gürültülü komünikasyon kanalında veri iletmek istiyoruz G ve p’nin çarpımını alır, modül 2 girişi ile X kod sözcüğünü elde ederiz



Eşlik kontrolü

İletim sırasında hata olmaz ise r kod sözcüğü, x ile tıpatıp aynı olur

r = x

Alıcı H ve r’yi çarparak z sendrom vektörünü elde eder z vektörü hata varsa nerede olduğunu gösterir Bu çarpım;

Z vektörü 0 olduğundan, alıcı verinin hatasız olduğunu anlar Bu sonuç veri vektörü G ile çarpıldığında , alt uzay vektöründe bir değişime uğradığı gözlemine dayanır Transfer sırasında hiçbir şey olmazsa, r H’nin çekirdeği olarak kalır ve çarpım hep sıfırı verir
Hata Düzeltilmesi

Diyelim ki bir hata oluştu Matematiksel olarak; r = x + eiyazılabilir Mod 2’ye göre, i konumda 1 olan bir sıfır vektörü, 1’den başlar Yukarıdaki tanım i Konumda bir hata olduğunu gösterir

Şimdi bu vektörü H ile çarparsak :

x iletilen veri olduğundan hatasızdır ki bu, H ve x’in çarpımının sıfır olduğunu gösterir Sonuç olarak;

Şimdi H ve P standart baz vektörlerinin çarpımı H’nin hata bulunan sütununu bulur H’yi parçalı biçimde yarattığımızdan, hatalı sütunu 2’lik sayı olarak yazabiliriz Mesela (1,0,1) H’nin bir sütunudur ve 5 konuma tekabül eder ki hata ordadır ve düzeltilebilir

Alttaki şekli inceleyelim:

Şimdi ;

H’nin 2 sütununa denk gelir 2 konumda bir hata bulunmuştur ve düzeltilebilir

Bu yolu kullanarak tek bitlik hataların düzeltilebileceğini göstermek zor değildir Bunun dışında, Hamming Kodu tek veya çift bit hataları bulabilir ama hata oluştuğunda H’nin çarpımı neredeyse hiçbir zaman sıfırdan farklı olmaz Ama Hamming (7,4) bir ve iki bitlik hataları birbirinden ayıramaz

Ekstra Eşlik Biti

Hamming kodları ekstra eşlik bitiyle kullanılabilir Ek bir bütün bitlere Hamming Kodu bütün bitleri kontrol ettikten sonra uygulanıp eklenir Bu geçerli kodların Hamming uzaklığını 3’ten 4’e uzatır Sonra bütün 1,2,3 bitlik hatalar bulunabilir Artı 2 bitlik hatalar 1 ve 3 bitlik hatalardan ayırt edilebilir 1 bitlik hatalar düzeltilebilir

Eşlik hatası gözlenmez ama Hamming Kodu bir hata bulur ise, bunun 2 bitlik bir hata olduğu farz edilir fakat düzeltilemez

Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #6
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



fModulo işlemi
Modulo işlemi, hesaplamada bir sayının diğer bir sayıya bölümünden arta kalan sayıyı verir

İki pozitif sayı, a (bölünen) ve n (bölen), verildiğinde, a modulo n (a mod n olarak kısaltılır) a sayısının n ile bölünmesinden arta kalan sayı olarak düşünülebilir Örneğin "5 mod 4" ifadesi 1 sonucunu verirken, "9 mod 3" ifadesi 0 sonucunu verir (3'ü 3'le çarptıktan sonra 9'dan çıkaracak sayı kalmaz) a veya n negatif bir sayı olduğunda, bu naif tanım bozulur ve bir çok programlama dili bu değerlerin nasıl tanımlandığı konusunda farklılık gösterir Modulo işlemi, genellikle a ve n iki tamsayı olduğu durumlarda yapılsa da, bilgisayar sistemlerinin bir çoğu sayısal işlenenlerin diğer türlerine de olanak sağlamaktadır

On altılı sayı sistemi
Heksadesimal , 16 tabanlı sayı sistemidir Hxx bilgisayar belleğindeki 8 bit'lik bayt'ları göstermek için kullanılan bir kestirme yoldur

Bu sayı sistemine "16 tabanlı sayı sistemi" denilmesinin nedeni, 16 tane sembolden oluşmasıdır Sembollerden 10 tanesi rakamlarla (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), geri kalan 6 tanesi harflerle (A, B, C, D, E, F) temsil edilir

Dönüşüm Tablosu

Aşağıdaki tabloda; 1'den 15'e kadar 16, 10, 8 ve 2 tabanlı sayılar verilmiştir

0hex = 0dec = 0oct 0 0 0 0
1hex = 1dec = 1oct 0 0 0 1
2hex = 2dec = 2oct 0 0 1 0
3hex = 3dec = 3oct 0 0 1 1

4hex = 4dec = 4oct 0 1 0 0
5hex = 5dec = 5oct 0 1 0 1
6hex = 6dec = 6oct 0 1 1 0
7hex = 7dec = 7oct 0 1 1 1

8hex = 8dec = 10oct 1 0 0 0
9hex = 9dec = 11oct 1 0 0 1
Ahex = 10dec = 12oct 1 0 1 0
Bhex = 11dec = 13oct 1 0 1 1

Chex = 12dec = 14oct 1 1 0 0
Dhex = 13dec = 15oct 1 1 0 1
Ehex = 14dec = 16oct 1 1 1 0
Fhex = 15dec = 17oct 1 1 1 1



Heksadesimal Sayıların Desimale Çevrilişi

5A316 = 5 · 162 + 10 · 161 + 3 · 160

= 5 · 256 + 10 · 16 + 3 · 1

= 1280 + 160 + 3

= 144310

Desimal Sayıların Heksadesimale Çevrilişi

Desimal sayı, bölüm sıfır olana kadar heksadesimalin tabanı olan 16'ya bölünür Bölme işlemi bittikten sonra, sırayla bölüm hanesindekiler ve en son olarak da kalan sayı soldan sağa yazılır Örnek;

100/16 = 4(kalan):6(bölüm) 6/16 = 6(kalan) = 64

Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #7
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



İkinin tümleyeni
Bir ikili sayının ikiye tümleyeninin alınması, yani ikiye tümlenmesi, kendisinden büyük ve 2'nin tamsayı üssü olan en küçük tamsayıdan çıkarılması ile gerçekleştirilir Elde edilen sayının ikili sayı aritmetiğinde orijinal sayının eksi işaretlisi olarak davranması nedeniyle, tamsayı değerleri bilgisayarda temsil etmek için kullanılan ikinin tümleyeni gösterimi bu işlemi temel almıştır -1 ile çarpmanın (veya toplamsal tersin bulunmasının) ikinin tümleyeni kullanılarak gerçekleştirildiği bu gösterime göre oluşturulmuş sayıların değerleri aşağıdaki formül kullanılarak hesaplanabilir



Buna göre, n ikillik bir bölgede temsil edilebilecek en küçük sayı 2-n-1—işaret ikili 1, diğer ikiller 0—olurken, en büyük sayı 2n-1-1—işaret ikili 0, diğer ikiller 1—olacaktır Temsil edilebilir eksi değerlerin artı değerlerden sayıca bir fazla olmasının sebebi, tüm basamakların 0 olması ile temsil edilen sıfırın artı değerler ile aynı işaret ikiline sahip olmasıdır Bu, birin tümleyeni ve işaretli büyüklük gibi diğer gösterimlerin aksine, ikinin tümleyeninde sıfır için tek gösterim olduğu anlamına gelir

Açıklama

n basamaklı bir N sayısının ikinin tümleyeni N≠0 için 2n-N ve N=0 için 0 olarak tanımlanır Sayının ikillerinin 1'e tümlenmesi ile yapılan birin tümleyeni düşünüldüğünde, bir sayının ikiye tümlenmesinin aynı sayının birin tümleyenine 1 ekleyerek yapılabileceği görülür Daha basit bir yöntem önermek gerekirse, bir sayının ikiye tümlenmesi şöyle gerçekleştirilebilir: söz konusu sayının sağ tarafında yer alan 0'ları ilk 1'e kadar değiştirilmeden bırakılıp, bu 1'den sonraki basamaklardaki 0'lar 1, 1'ler de 0 ile değiştirilir

Örnek

İkininTümleyeni(011010010) → 100101110
İkininTümleyeni(110011011) → 001100101

Bugünkü modern bilgisayarlarda ikinin tümleyeni gösteriminin tercih edilmesinin birçok nedeni vardır

Gösterimdeki en yüksek basamaklı ikil temsil edilen değerin işaretini belirler; eksi sayılar işaret ikilindeki 1 ile gösterilirken, 0 ve artı sayılar işaret ikilindeki 0 ile temsil edilirler
0'ın sadece bir gösterimi vardır Bu da 1'in tümleyeninde ve işaretli büyüklük gösteriminde oluşan +0 ve -0 sorununu ortadan kaldırır
n ikilde -2n-1'den 2n-1-1'e kadarki tamsayı değerleri ifade edilebilir Burada bir simetrinin olmaması 0'ın tek gösteriminden kaynaklıdır
Mutlak değerce en büyük eksi sayının -1 ile çarpılması taşmaya neden olacaktır Bunun nedeni de yukarıda bahsedilen simetrinin olmamasıdır

Eksi sayıların gösterimi

İşaretli büyüklük gösterimi

Eksi sayıların gösteriminde donanımdaki sınırlamalardan dolayı, ikil adı verilen ikili sayılardan yararlanılır İşaretli ya da işaretsiz bütün ikili sayılar bilgisayarda ikillerle ifade edilir Sayının işaretli olup olmadığı önceden belirlenir Eğer ikili tabanda bir sayı işaretli olarak belirlenmişse en soldaki ikil sayının işaretini, geri kalan ikiller ise sayının mutlak değerini ifade eder Eğer sayı işaretsiz olarak belirlenmişse en soldaki ikil sayının en anlamlı ikili olur Burada, işaret ikili olarak artı sayılar için 0, eksi sayılar için ise 1 kullanılır Örneğin; 0110 işaretsiz ikili sayısı olarak onlu tabanda 6, işaretli olaraksa +6 anlamına gelir 1110 ise işaretsiz olarak onlu tabanda 14 iken işaretli olarak -6'ya eşdeğerdir

İşaretli tümleyen gösterimi

Eksi bir sayı mutlak değerinin tümleyeni alınarak da ifade edilebilir Bir sayının ters işaretlisinin sadece işaret ikilinin değiştirilmesiyle elde edildiği işaretli büyüklük gösteriminden farklı olarak, tümleyenle gösterimde işaret değiştirmek için sayının tümleyeni alınır Bu, işaret ikili dışındaki ikillerin de değişebileceği anlamını taşır

Artı sayılar her zaman için en solunda 0 ile başlayacağından, bu sayıların tümleyenlari de, yani eksi sayılar, 1 ile başlayacaktır Diğer ikillerin yeni değerleri, ne çeşit bir tümleme yapılmasına bağlı olarak değişir Birin tümleyeni alınması durumunda, diğer ikiller de tersi alınarak değişirken, ikinin tümleyininde sonuç işaretsiz gösterimdeki her ikilin tersinin alınıp bulunan sonuca 1 eklenmesiyle ifade edilir
Örnek

12 sayısının sekiz ikille gösterildiği durumu inceleyelim +12'nin gösterimi en soldaki 0 değerli işaret ikilinin ardından mutlak değerin ikili tabanda ifade edilmesiyle elde edilir Dolayısıyla, +12 00001100 olarak temsil edilecektir Buna göre, -12 sayısını üç şekilde ifade edebiliriz:
İşaretliBüyüklükG(-12) /* İşaret ikili değiştirilir */ → 10001100
BirinTümleyeniG(-12) /* Tüm ikiller değiştirilir */ → 11110011
İkininTümleyeniG(-12) /* BirinTümleyeniG(-12) + 1 */ → 11110100

Dikkat edecek olursanız, +12 ve -12'nin ikinin tümleyeni gösterimlerinin toplamı 00001100 + 11110100 = 100000000'dır Bu dokuz ikillik işaretsiz bir sayıdır ve bu sayı da 28 = 256'dır Ancak biz sonucu sekiz ikillik ikinin tümleyeni gösterimli bir sayı olarak ele alırsak 1'i sekiz ikillik hesaplamada oluşan bir taşma olarak düşünür ve atarız Dolayısıyla, sonuç olarak 00000000 = 0'ı elde ederiz Bu da +12 ve -12'nin toplamından bekleyeceğimiz bir sonuçtur

Aritmetik İşlemler

Aritmetik Toplama

2'nin tümleyeni ile ifade edilen farklı işarete sahip iki sayıyı topluyorsak herhangi özel bir işleme gerek yoktur Çünkü bu durumlarda taşma oluşmaz 2'nin tümleyeni kullanılarak temsil edilen iki eksi sayının toplamı, işaret ikilleri de dahil olmak üzere iki sayının toplanmasıyla bulunur İşaret ikillerinin toplanmasıyla oluşan elde atılır Oluşan sonuç eğer eksiyse bu 2'nin tümleyeni biçimindedir

Örnek

00000011 (elde) 00001111 (elde)
00000110 (+6) 11111010 (-6)
+ 00001101 (+13) + 00001101 (+13)
=========== ===========
00010011 (+19) 00000111 (+7)



00000011 (elde) 11111001 (elde)
00000110 (+6) 11111010 (-6)
+ 11110011 (-13) + 11110011 (-13)
=========== ===========
11111001 (-7) 11101101 (-19)



Buradaki mantık onluk tabanda kullandığımız toplama mantığı ile aynıdır En düşük değerli basamaktan başlayarak toplama işlemleri yapılır, çıkan eldeler bir sonraki basamağa aktarılarak toplama işlemi tamamlanır Eğer iki artı sayının toplamından eksi bir sonuç, iki eksi sayının toplamından artı bir sayı çıkıyorsa burada bir taşma söz konusudur

Genel anlamda n ikillik iki sayı ile başlamışsak ve toplamanın sonucu n+1 ikilden oluşuyorsa bir taşma var demektir n ikillik bir sayının başına artı sayılar için 0, eksi sayılar için 1 getirerek ikil sayısını (n + 1)'e çıkarırız ve toplamı işlemini böyle gerçekleştiririz Taşmanın oluştuğu bir durum için +6 ve +13 sayılarnı 5 ikille ifade edip toplayalım

Örnek

00110 (+6)
+ 01101 (+13)
========
10011 (-3) (taşma)



Aritmetik çıkarma

İkili tabandaki çıkarma işleminin mantığı onlu tabandaki ile aynıdır: çıkan sayının basamağı diğer sayının aynı basamağından küçükse, çıkan sayının bir sonraki basamağından ödünç 1 alınır Ancak, çıkarma işlemini ikinin tümleyeni kullanarak yapmak çok daha verimli olacaktır Yapılması gereken, çıkarılan sayının ikinin tümleyeni alınıp diğer sayıya eklenerek sonucun bulunmasından ibarettir +7'den +6'yı çıkaralım:

Örnek

0111 (+7) 0111 (+7)
- 0110 (+6) + 1010 (-6)
======= =======
0001 (+1) (1)0001 -> 1 eldesi atılır



İşaret ikili dahil olmak üzere çıkarılanın ikinin tümleyeni alınarak diğer sayıya eklenir İşaret ikillerinin toplanması sonucu oluşacak elde atılır

Çıkarma işleminde iki sayının da işareti aynıysa bir taşma oluşmaz Aksi takdirde, sayıların değerine göre taşma söz konusu olabilir

Donanım ile çarpma işlemi

İki bitlik iki sayının çarpımı



Yazılım ile çarpma işlemi

Aşağıda işaretsiz çarpma işlemi için yazılım algoritması verilmiştir





Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #8
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



İşaretle genişletme,

İşaretle genişletme, bilgisayar aritmetiğinde sayıların değerlerini ve işaretlerini kaybetmeden genişletilmesine verilen addır Daha açıklamak gerekirse, gereken bit değerinden daha kısa olan bir değerin (sayı, vb nin) en anlamlı (en soldaki) bit değeri ile, gereken bit değerine ulaşıncaya kadar genişletilmesi işlemidir Böylelikle 2'nin tümleyeni sayı sistemi içinde, artı ve eksi işaretli sayıların hem değerleri hem de işaretleri korunmuş olur

Örnekle anlatmak gerekirse 8 bitlik "0000 1011" (onluk sayı tabanında 11) sayısının önüne sıfırlar ekleyip (8 adet), 16 bitlik "0000 0000 0000 1011" i (onluk sayı tabanında 11) elde etmek Diğer bir örnek için ise "1000 0000" (onluk sayı tabanında -128) alınıp, önüne gereken miktarda (8 adet) 1 konulursa elde edilecek sayı "1111 1111 1000 0000" (onluk sayı tabanında -128) olacak, ve yine bit sayısı genişletilip kullanıma uygun hale getirilirken, sayıların ifade ettikleri değerler sabit kalacaktır

Özellikle işlemcilerin buyrukları içerisindeki anlık değerleri kullanabilmek için hayati önem taşır

Alıntı Yaparak Cevapla

Bilgisayar Aritmetiği

Eski 10-29-2012   #9
Prof. Dr. Sinsi
Varsayılan

Bilgisayar Aritmetiği



bu konu beni aşar
Alıntı Yaparak Cevapla
 
Üye olmanıza kesinlikle gerek yok !

Konuya yorum yazmak için sadece buraya tıklayınız.

Bu sitede 1 günde 10.000 kişiye sesinizi duyurma fırsatınız var.

IP adresleri kayıt altında tutulmaktadır. Aşağılama, hakaret, küfür vb. kötü içerikli mesaj yazan şahıslar IP adreslerinden tespit edilerek haklarında suç duyurusunda bulunulabilir.

« Önceki Konu   |   Sonraki Konu »


forumsinsi.com
Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ForumSinsi.com hakkında yapılacak tüm şikayetlerde ilgili adresimizle iletişime geçilmesi halinde kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde gereken işlemler yapılacaktır. İletişime geçmek için buraya tıklayınız.