İşlemci ondalıklı sayısını nasıl hesaplar?

Başlatan karacan451, 25 Aralık 2017, 12:01:03

karacan451

Merhaba

0,0987654626 bir değişken olsun. Bu sayıyı işlemcinin ram me nasıl saklanıyor. Amacım 10 nun kartlarla çarpmadan lcd ekrana yazdırmak.

kartal_0689

eğer çarpma işlemi yapmadan tam sayıya çevirmeden saklaman gerekiyorsa,
virgülden öncesini ayrı virgülden sonrasını ayrı kaydedip okuduktan sonra o şekilde işlem yapman gerekir.
TURKEY/ANK

karacan451

 1 değişkeni var. Bide 0.113 değişkeni var işlemci ondalıklı nasıl anlıyor

kartal_0689

#3
ben mikropascal kullandığım için buna göre örnek vereceğim. Belki başka derleyicilerde farklı yöntemler vardır.
1.01254 sayısını saklayacağını düşünelim.

öncelikle bu sayıyı "Temp_Real" isimli bir değişkende belirtelim. (Real, mikropascal' da virgüllü - ya da + işaretli sayıların değişken tipidir)

Temp_Real := 1.01254;

daha sonra bu değişkenin tam sayı kısmını "Temp_Byte" isimli başka bir değişken içine atalım. (Byte, mikropascal' da 0-255 arası sayıların değişken tipidir.)

Temp_Byte := Temp_Real div 1;

yukarıdaki işlemde sayı 1 e bölünür ve virgülden sonraki basamaklar yazılmadan değişken içine aktarılır.
sonra bu değişken eeprom' un bir adresine yazılır.

EEPROM_Write(0x0000,Temp_Byte);
yukarıda parantez içinde ilk yazılan eeprom adres, ikinci yazılan değişkendir.

virgülden sonraki sayılarda ise bu sefer mod 1 yaparak virgülden sonraki basamakları alacağız.

Temp_Byte2 := Temp_Real mod 1;
EEPROM_Write(0x0000,Temp_Byte2);

yukarıdaki işlemler aslında işlemi çok uzatıyor. Neden çarpma yapmadan kullanmak istediğinizi anlamadım.

Aslında;

Result := Temp_Real * 100000;
işlemini yaptırıp yazabilirsiniz. Ama bu değer EEPROM için fazla ise bunları bölebilirsiniz.
bunun için işlemci eeprom alanı ne kadarlık ise (bazıları 8 bit, bazıları 16bit kaydedebilir) ona göre bölebilirsiniz.



TURKEY/ANK

Powered by EzPortal