![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#1 |
Prof. Dr. Sinsi
|
![]() Bilgisayar AritmetiğiBilgisayar 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 ![]() ![]() ![]() ![]() ![]() 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ı ![]() ![]() Sayısal Sistemler Bir AMB, işlemlerini diğer dijital devrelerin kullandığı sayı biçimiyle aynı şekilde ifade etmelidir ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() Şekilde görülen 2-bit AMB?nin A ve B isminde iki tane girişi bulunmaktadır ![]() ![]() ![]() ![]() ![]() ![]() İş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 ![]() ![]() ![]() 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 ![]() ![]() ![]() 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 ![]() ![]() ![]() Akümülatör Başlangıç ve sonuç bilgilerini depolamak için akümülatör kullanılı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 ![]() ![]() ![]() ![]() ![]() Kontrol Birimi İşlemciye gönderilen komutların çözülüp (komutun ne anlama geldiğinin tanımlanması) işletilmesini sağlar ![]() ![]() 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 ![]() ![]() ![]() 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 ![]() ![]() ![]() 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 olabilir ![]() ![]() Mantıksal işlemler: (VE, DEĞİL, VEYA, ÖZELVEYA) Bit kaydırma işlemleri ![]() ![]() ![]() ![]() Karmaşık İşlemler AMB?ler herhangi bir işlemi yürütecek şekilde tasarlanabilir fakat işlem ne kadar karmaşıksa maliyet artar ![]() ![]() ![]() ![]() ![]() Çok fazla karmaşık bir devre tasarlayarak, tek basamakta karekökü hesaplayan bir AMB olabilir ![]() ![]() Çok karmaşık bir devre tasarlayarak, karekökü birkaç basamakta hesaplayan bir AMB olabilir ![]() ![]() ![]() ![]() ![]() ![]() Karmaşık bir devre tasarlayarak karekök işlemini değişik basamaklarda hesaplayan bir AMB olabilir ![]() ![]() İş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öylemek ![]() ![]() 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 ![]() Yukarıdaki seçenekler en hızlı ve pahalıdan en yavaş ve en ucuza doğru gitmektedir ![]() ![]() ![]() ![]() ![]() ![]() Giriş ve Çıkış AMB?nin girişleri işlenecek veriler ve denetim biriminden gelen hangi işlemin yapılacağını belirten değerlerdir ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#2 |
Prof. Dr. Sinsi
|
![]() Bilgisayar AritmetiğiAritmetik 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 ![]() ![]() ![]() 0101 + 0100 = 1001 Örnekte de görüldüğü gibi cevap 4 bitlik gösterimde -7 olur ![]() ![]() ![]() ![]() İkiye tümleyeni kullanırken bu durum iki pozitif tamsayıyı ya da iki negatif tamsayıyı kendi aralarında toplarken oluşabilir ![]() ![]() ![]() ![]() ![]() ![]() ( 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 ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() ![]() ![]() Önemli olan nokta bilgisayarların hata yapabilir olduğudur ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Üstten taşma Kayan Nokta aritmetiğinde taşma iki türlü meydana gelebilir ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() ![]() 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 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 10 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Özetlemek gerekirse kayan nokta biçiminde nümerik değerler eklenirken kullanılan sıralama sonucun doğru olması açısından önemlidir ![]() ![]() ![]() Bu tür sorunların önemi daha uzun ondalık alanı kullanılarak azaltılabilir ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() Yayılma: eğer verilen değer tutulmak için çok büyükse taşma olduğu belirtilerek özel bir değere atanabilir ![]() ![]() ![]() ![]() 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 ![]() ![]() |
![]() |
![]() |
![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#3 |
Prof. Dr. Sinsi
|
![]() Bilgisayar AritmetiğiBCD 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 İ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 ![]() ![]() (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 ![]() ![]() Binary ile BCD'nin karşılaştırılması: - BCD kodlama ikilik sistemden daha verimsizdir ![]() ![]() - 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 ![]() |
![]() |
![]() |
![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#4 |
Prof. Dr. Sinsi
|
![]() Bilgisayar AritmetiğiEşlik denetimi Hata tespiti, veri iletimi sırasında farklı nedenlerle bozulan veriyi tespit etme işlemidir ![]() ![]() 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 ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() ç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 |
![]() |
![]() |
![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#5 |
Prof. Dr. Sinsi
|
![]() Bilgisayar AritmetiğiHamming kodu Telekomünikasyonda, ismini yaratıcısı Richard Hamming’den alan, doğrusal hata düzelten bir koddur ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() ![]() ![]() Hamming'den Önceki Kodlar Hamming kodundan önce birkaç basit hata düzeltici kod kullanılmıştır ![]() ![]() Eşlik Eşlik verilerdeki 1 numaralı bitin tek veya çift olduğunu anlamaya yarayan bir bit ekler ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beşin İkisi Kodu 1940’larda Bell beşin ikisi diye bilinen biraz daha karmaşık bir kod kullanmıştır ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() Hamming olan kodlama sistemlerinin, beşin ikisi dâhil, üzerinde çalışıp, bu fikirleri genelleştirmiştir ![]() ![]() ![]() ![]() ![]() ![]() ![]() Hamming iki ve daha fazla bitin değişmesi problemini uzaklık olarak tanımlamıştır ![]() ![]() ![]() Hamming bu uzaklığı ve bilgi oranını olabildiğince artırmaya çalışmıştır ![]() ![]() ![]() Örnek Hamming Kodu Kullanımı 0110101 yedi bitlik veri sözcüğümüz olsun ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() 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 ![]() ![]() ![]() p4 p3 p2 p1 İkilik tabanda 1 0 1 1 Onluk tabanda 8 2 1 Σ = 11 11 ![]() ![]() ![]() ![]() Son olarak, x ve y konumlarındaki iki bit yer değiştirmiş olsun ![]() ![]() ![]() ![]() 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 matrisleri Hamming kodlar, Hamming Matrisleri adı verilen matris çarpımlarının eşlik biti fikrinin genişlemesiyle çalışı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 ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() Kanal kodlama Diyelim ki gürültülü komünikasyon kanalında veri iletmek istiyoruz ![]() ![]() ![]() 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ü 0 olduğundan, alıcı verinin hatasız olduğunu anlar ![]() ![]() ![]() Hata Düzeltilmesi Diyelim ki bir hata oluştu ![]() ![]() ![]() ![]() ![]() ![]() Ş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 ![]() Şimdi H ve P standart baz vektörlerinin çarpımı H’nin hata bulunan sütununu bulur ![]() ![]() ![]() ![]() Alttaki şekli inceleyelim: Şimdi ; H’nin 2 ![]() ![]() ![]() ![]() Bu yolu kullanarak tek bitlik hataların düzeltilebileceğini göstermek zor değildir ![]() ![]() ![]() Ekstra Eşlik Biti Hamming kodları ekstra eşlik bitiyle kullanılabilir ![]() ![]() ![]() ![]() ![]() ![]() Eşlik hatası gözlenmez ama Hamming Kodu bir hata bulur ise, bunun 2 bitlik bir hata olduğu farz edilir fakat düzeltilemez ![]() |
![]() |
![]() |
![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#6 |
Prof. Dr. Sinsi
|
![]() Bilgisayar AritmetiğifModulo 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 ![]() ![]() ![]() ![]() On altılı sayı sistemi Heksadesimal , 16 tabanlı sayı sistemidir ![]() ![]() Bu sayı sistemine "16 tabanlı sayı sistemi" denilmesinin nedeni, 16 tane sembolden oluşmasıdır ![]() ![]() 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 ![]() ![]() 100/16 = 4(kalan):6(bölüm) 6/16 = 6(kalan) = 64 |
![]() |
![]() |
![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#7 |
Prof. Dr. Sinsi
|
![]() 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 ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() 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 ![]() ![]() ![]() Ö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 ![]() ![]() n ikilde -2n-1'den 2n-1-1'e kadarki tamsayı değerleri ifade edilebilir ![]() ![]() Mutlak değerce en büyük eksi sayının -1 ile çarpılması taşmaya neden olacaktı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 tümleyen gösterimi Eksi bir sayı mutlak değerinin tümleyeni alınarak da ifade edilebilir ![]() ![]() ![]() 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 ![]() ![]() ![]() Örnek 12 sayısının sekiz ikille gösterildiği durumu inceleyelim ![]() ![]() ![]() İş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 ![]() ![]() ![]() ![]() ![]() 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 ![]() ![]() ![]() ![]() ![]() Ö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 ![]() ![]() ![]() Genel anlamda n ikillik iki sayı ile başlamışsak ve toplamanın sonucu n+1 ikilden oluşuyorsa bir taşma var demektir ![]() ![]() ![]() Ö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 ![]() ![]() ![]() ![]() ![]() ![]() Ö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 ![]() ![]() Çıkarma işleminde iki sayının da işareti aynıysa bir taşma oluşmaz ![]() ![]() 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 ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Bilgisayar Aritmetiği |
![]() |
![]() |
#8 |
Prof. Dr. Sinsi
|
![]() 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 ![]() ![]() ![]() ![]() Ö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 ![]() ![]() Özellikle işlemcilerin buyrukları içerisindeki anlık değerleri kullanabilmek için hayati önem taşır ![]() |
![]() |
![]() |
|