Binary to Decimal Conversion

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
6,130
C de printf ile bir degiskenin icerigini kolayca BCD'ye cevirip displeyde vs gosterebiliyoruz.

Bu baslikta amacimiz bu islemi low level yapmak.

Ornegin bir islem yaptigimizda sonucu 0x12 olarak bulduk ve bunu gostergede 10'lu sistemde gosterecegiz.

0x12 sayisi displeyde 18 olarak gormemiz gerekir.

D1 ve D0 adinda iki degisken aliyoruz. 12 sayisi kucuk oldugu icin 2 degisken aldim. (Normalde 3 degisken almaliyiz.)

D1D0SayimizAciklama
000000000001 0010Ilk islemler
000000000010 0100Tum degiskenleri 1 sola kaydirdik. (1. Kaydirma)
000000000100 1000Tum degiskenleri 1 sola kaydirdik. (2. Kaydirma)
000000001001 0000Tum degiskenleri 1 sola kaydirdik. (3. Kaydirma)
000000010010 0000Tum degiskenleri 1 sola kaydirdik. (4. Kaydirma)
000000100100 0000Tum degiskenleri 1 sola kaydirdik. (5. Kaydirma)
000001001000 0000Tum degiskenleri 1 sola kaydirdik. (6. Kaydirma)
000010010000 0000Tum degiskenleri 1 sola kaydirdik. (7. Kaydirma)
Dikkat D0 4 den buyuk
000011000000 00004 den buyuk degerlere 3 ekleyelim

000110000000 0000Tum degiskenleri 1 sola kaydirdik. (8. Kaydirma)
En son adimda 4 u astimi testi yapmiyoruz.
1818 olarak sonucu bulduk

Istediginiz kadar buyuk verilerle de calisabilirsiniz.

Algoritmanin adi Double dabble algoritmasi.

 
Şu dakkika yeni bir sistem buldum çok daha kolay

Diyelim 4 hanemiz var

Sayımız 1000 den büyük mü büyük ise 1000 çıkar 4. haneye +1 topla. satır başı
Değilse
Sayımız 100den büyük mi büyük ise 100 çıkar 3. haneye +1 topla satır başı
Değilse
Sayımız 10dan büyük mi büyük ise 10 çıkar 2. haneye +1 topla satır başı
Değilse
Son kalan sayıyı 1. haneye ver

Ben bunun kullanırım süper bir şey daha önce nasıl aklıma gelmedi.

Bu yeni bir icadım olabilir mi acaba :emindegil1:
 
32 bitlik bir sayiyi kac islemde yapabileceksin?
Bu tur islemlerde amac islemciyi en az yormak (hizli sekilde sonuca ulasmak)

Mesela unsigned 0xFFFFFFFF sayisi 4294967295 demek.

4 kere 1 milyar cikartacaksin.
2 kere 100 milyon cikartacaksin.
9 kere 10 milyon cikartacaksin.
4 kere 1 milyon cikartacaksin.
9 kere 100 bin cikartacaksin.
6 kere 10 bin cikartacaksin.
7 kere bin cikartacaksin.
2 kere yuz cikartacaksin.
9 kere on cikartacaksin.

Topla bakalim kac tane cikartma islemi yapacaksin?
 
Derleyiciler büyük ihtimalle bütün matematiksel pratikleri kullanarak yapıyordur diye düşünüyorum.
Küçük bir program yazarak hangisinin ne kadar sürede işledigini test ettinizmi?
 
Yapilan islemler belli oldugu icin ilave olarak deneysel test etmeye gerek yok gorunuyor.
 
32 bitlik bir sayiyi kac islemde yapabileceksin?
Bu tur islemlerde amac islemciyi en az yormak (hizli sekilde sonuca ulasmak)

Mesela unsigned 0xFFFFFFFF sayisi 4294967295 demek.

4 kere 1 milyar cikartacaksin.
2 kere 100 milyon cikartacaksin.
9 kere 10 milyon cikartacaksin.
4 kere 1 milyon cikartacaksin.
9 kere 100 bin cikartacaksin.
6 kere 10 bin cikartacaksin.
7 kere bin cikartacaksin.
2 kere yuz cikartacaksin.
9 kere on cikartacaksin.

Topla bakalim kac tane cikartma islemi yapacaksin?
Bence iyiymiş , double babble de 32bit sayıyı nasıl kaydıracaksın ? hatta 16bit sayıyı nasıl test edeceksin bayt bayt ilk iki byte test edersin sonraki desimal segmentler nasıl olacak 4.294.967.295 burada on tane hane var hafıza byte byte yapsan o da az işlem değil daha hızlı olduğu kesin ama bu yöntem de kullanılabilir kod küçük olur.
 
Son düzenleme:
Kullandigin islemciye gore degisir ama asm ile bu isler cok kolay.
 

Çevrimiçi personel

Forum istatistikleri

Konular
7,104
Mesajlar
121,020
Üyeler
2,879
Son üye
dinomiout

Son kaynaklar

Son profil mesajları

az bilgili çok meraklı
Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Back
Top