Carp ve topla peki sonuc ne kadar dogru?

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
3,833
Nasil yazacam/toparlayacagim bilmiyorum neyse kervan yolda duzelir.

8 bit icin konusalim.

A ve B pozitif ve bir den kucuk sayilar olsun.

A ve B, 8 bit ile yazilan sayisal degerler olsun. Bu durumda A>2^-9 ve B>2^-9 olacaktir.

Bir a ve b sayisi 8 bitle ifade edilmek istendiginde

a= A+/-DA ve
b=B+/-DB olarak yazilabilir.

Cogu A ve B icin DA ve DB sifir olamaz cunku bit uzunlugumuz belli.

X istedigimiz kadar uzun bit uzunluguyla yazilabilen bir degisken olduguna gore

X+a*b islemini yapmaya kalktigimizda bulacagimiz sonuc ne kadar dogrudur?
 
Son düzenleme:
hep bu konuları öğrenmek istemişimdir ama benim anlayabileceğim düzeyde bir anlatım bulamadım.
 
:D
8 bit: 0 ile 255 arasıdır "2^-9" olamaz.
 
Son düzenleme:
Mesela

a sayimiz 0.505859375 sayisi olsun.

Bu sayi 8 bitle ifade edilecek olursa A=0.50390625 dir

O halde

A=0.50390625
DA=0.001953125 dir.

a=A+DA

a=0.50390625 + 0.001953125 dir.
 
O notasyonda sayimizin gercek degerini ve bilgisayarda saklanan degerini gosterdim. Aradaki fark DA olarak gosterildi.

ikili sistemde bazi sayilar guzel saklaniyor bazilari bu kadar guzel saklanamiyor.

Mesela basimiza bela olan 1/3 sayisi 3lu sayi sisteminde 0.1 seklinde cok guzel saklanir.
 
O notasyonda sayimizin gercek degerini ve bilgisayarda saklanan degerini gosterdim. Aradaki fark DA olarak gosterildi.

ikili sistemde bazi sayilar guzel saklaniyor bazilari bu kadar guzel saklanamiyor.

Mesela basimiza bela olan 1/3 sayisi 3lu sayi sisteminde 0.1 seklinde cok guzel saklanir.
Hocam "+/-" ne demek oluyor. Bir de "A" 8 bitle yazılan sayısal değerken "DA"nın ne olduğunu anlamadım. Ders verecek vaktin de yoktur. Kaynağa işaret etsen Bu geceyi kurtarırım :) .
 
Ornek vererek aciklayayim. 4 bit ile pozitif ve 1 den kucuk sayilari ifade ederken

Kod:
1000 = 0.5             8/16
0100 = 0.25           4/16
0010 = 0.125         2/16
0001 = 0.0625       1/16

Peki 0.6 sayisini nasil yazacagiz.

ya 1000 yani + 0.1 hata ile yazacagiz
ya da 1010 yani -0.025 hata ile gosterecegiz.

O halde

0.6 sayisini 0.5 ile gosterirsem DA=0.1 yani 0.5 + 0.1
0.6 sayisini 0.625 olarak gosterirsem DA=-0.025 yani 0.6-0625=-0.025 olur.

DA normalde bilgisayar islemlerinde gorulmez cunku bit sayimiz az oldugu icin yazilamiyor.
Gorulmedigi icin de matematiksel bir hata yapmis oluyoruz.
 
mevzuyu çok anlamadım ama gösterdiğiniz koddan yola çıkarak şunu söyleyebilirim anladığım kadarıyla register ataması yapılıp bunun üzerinden işlem yapan bir sisteminiz var çünkü ikili sistemde 1000 =8 e eşittir 0.5 e hiçbir zaman eşit olmaz 1000 registerına 0.5 ataması yapılmış yani bu çağrılırsa veya burdan çıkış alınmak isterse değeri 0.5 olsun diyor. Atandığı vermesi gereken değere, bunu bilgisayarın klavyesinden herhangi bir tuşa bastığımızda kayıtlı registardaki ascii koduna eşitlenmesi gibi düşünebiliriz eğer istediğiniz değer bu kayıtlı sistem üzerinden ise iki registerdan aynı anda çıkış alınarak bu değerin birbirinden çıkarıldığı bir devre yapılabilir veya siz bu koddaki değerleri kendinize göre değiştirebilirsiniz
 
Anlasilan fix point sayilarla hic ugrasmamissin.

En basta ne demistim?

A ve B pozitif ve bir den kucuk sayilar olsun.

1000.0000 = 8.0
0000.1000 = 0.5

Tam sayi kullanmiyorsan, noktaya da ihtiyacin kalmaz bu durumda 1000 ikili sayisi 0.5 anlamina gelir.

Yani 8/16

Biraz kafani karistirayim.

0x8 = 0.5
0x80 = 0.5
0x8000 = 0.5
0x80000000 = 0.5
 
Son düzenleme:
Anlasilan fix point sayilarla hic ugrasmamissin.

En basta ne demistim?



1000.0000 = 8.0
0000.1000 = 0.5

Tam sayi kullanmiyorsan, noktaya da ihtiyacin kalmaz bu durumda 1000 ikili sayisi 0.5 anlamina gelir.

Yani 8/16

Biraz kafani karistirayim.

0x8 = 0.5
0x80 = 0.5
0x8000 = 0.5
0x80000000 = 0.5
konuya baya uzağım anlaşılan :emindegil1::rolleyes::cheeky2::)
 
Konudaki kafa karışıklığının sebebi artık insanların sebebi float tipi değişkenli şeyler kullanmanın maliyetini daha önce düşünmemek. Burada anlatılan işlemlerde böyle bir değişkeniniz olmadan aslında küsüratlı sayılar tutabiliyorsunuz, dolayısıyla işlem yapması da çok daha kolay, mesela floating point unit e sahip olmayan bir işlemciniz olsun. Bunda bir float ile işlem yapmak mı daha hızlı yoksa integer tipi değişken ile mi?
 
[math]y=2^nB_n+2^{n-1}B_{n-1}+ ......8B_3+4B_2+2B_1+B_00+A_12^{-1}+A_22^{-2}+A_32^{-3}+........A_{m} 2^{-m}[/math]
Tam sayilarla ugrasiyorsaniz tum A katsayilari sifir.
1 den kucuk pozitif sayilarla calisiyorsaniz tum B katsayilari sifir.

Fixpoint sayilarla calisiyorsaniz A ve B katsayilari kullaniliyor.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,879
Mesajlar
100,183
Üyeler
2,488
Son üye
ilter

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top