Binary to Decimal Conversion

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
6,968
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.)

[TABLE=collapse]
[TR]
[TD]D1[/TD]
[TD]D0[/TD]
[TD]Sayimiz[/TD]
[TD]Aciklama[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]0000[/TD]
[TD]0001 0010[/TD]
[TD]Ilk islemler[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]0000[/TD]
[TD]0010 0100[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (1. Kaydirma)[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]0000[/TD]
[TD]0100 1000[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (2. Kaydirma)[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]0000[/TD]
[TD]1001 0000[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (3. Kaydirma)[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]0001[/TD]
[TD]0010 0000[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (4. Kaydirma)[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]0010[/TD]
[TD]0100 0000[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (5. Kaydirma)[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]0100[/TD]
[TD]1000 0000[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (6. Kaydirma)[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]1001[/TD]
[TD]0000 0000[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (7. Kaydirma)
Dikkat D0 4 den buyuk[/TD]
[/TR]
[TR]
[TD]0000[/TD]
[TD]1100[/TD]
[TD]0000 0000[/TD]
[TD]4 den buyuk degerlere 3 ekleyelim[/TD]
[/TR]
[/TABLE]

[TABLE=collapse,noborder]
[TR]
[TD]0001[/TD]
[TD]1000[/TD]
[TD]0000 0000[/TD]
[TD]Tum degiskenleri 1 sola kaydirdik. (8. Kaydirma)
En son adimda 4 u astimi testi yapmiyoruz.[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]8[/TD]
[TD][/TD]

[TD]18 olarak sonucu bulduk[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]

[TD][/TD]

[TD][/TD]
[/TR]
[/TABLE]

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?
 
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:

Forum istatistikleri

Konular
7,726
Mesajlar
128,623
Üyeler
3,119
Son üye
İsmail16

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top