tizedes tort
Fuzesi Arnold
arno at freemail.hu
Fri Aug 27 23:27:01 CEST 1999
Csak ez a 32 szamot kellene osztani 32-vel?
Mert ennyi szamra lehet, hogy egyszerubb lenne elore kiszamolni, es
tablazatban megadni,
foleg, hogy utana at kell alakitani decimalisba (Marmint BCD-be - gondolom).
Vagy:
Visszafele elkezdesz szamlalni az osztandotol, es annyiszor osszeadod a
3125-ot, ahanyszor
dekrementalni kellett.
Pl 7/32-t akarod kijelezni:
0000 0111 - 7
0000 0110 - 6 3125
0000 0101 - 5 +3125=6250
0000 0100 - 4 +3125=9375
0000 0011 - 3 +3125=12500
0000 0010 - 2 +3125=15625
0000 0001 - 1 +3125=18750
0000 0000 - 0 +3125=21875
Es meg is vagyunk.
7/32=0.21875
Meg van is egy kis c peldam bin-bcd atalakitasra.
Lassu, de mukodik.
temp1 a bejovo 8 bites binaris szam 2,5 (azaz 3) byte-on abrazolva.
for(temp2=0;temp2<8;temp2++)
{
if ( (temp1 & 3840) > 1024) temp1=temp1+0x300;
if ( (temp1 & 61440) > 16384) temp1=temp1+0x3000;
temp1=temp1<<1;
}
temp1=temp1 >>8;
digit[0]=temp1 & 15;
temp1=temp1 >>4;
digit[1]=temp1 & 15;
temp1=temp1 >>4;
digit[2]=temp1 & 15;
Az egesz arra epul, hogy leptetem a szamot balra, majd ha a a beleptetett
szam
>= mint 5, azaz nagyobb mint 4, akkor hozza kell adni 3-at.
De mivel a beleptetett szam az a 2., illetve 3. byte-ba lep be, ezert
h30-at, illetve h300-at adok hozza,
es az 5-nel nagyobbsagat is ennek megfeleloen a masodik bajt also, illetve
felso "nibble"-jenek kimaszkolasaval
vizsgalom. &3840, &61440
asm-ben sokkal rugalmasabban meg lehet oldani, csak nem lesz ennyire
attekintheto.
Ott nem kell ilyen nagy szamokat hasznalni, mivel a maszkolas,
nagysagvizsgalat kozvetlenul elvegezheto
a temp1 barmely bajtjan. Csak az atvitellel kell foglalkozni egyik bajtrol a
masikra.
Udv,
Arnold
mailto:arno at freemail.hu (No Attachment)
mailto:arnold at sch.bme.hu
http://www.sch.bme.hu/~arnold
----- Original Message -----
From: hajdu jozsi <bozse at freemail.c3.hu>
To: <elektro at irisz.hu>; <lista at chipcad.hu>
Sent: Friday, August 27, 1999 7:19 PM
Subject: tizedes tort
> >HELLO!
> >soha nem tanultam szamitogepre aritmetikat.
> >a kovetkezo baj van:
> >to:rtet kellene decimalis formaban kijelezni,
> >konkretan, 32-vel kell osztani egy binaris szamot
> >es at/alakitani decimalisba.
> >az egeszekkel nincs baj csak a tort resszel.
> >pl.:
> >32 / 32 -> 00100000 jobbra shift 5-tel 00000001 1
> >16 / 32 -> 00010000 " 00000000,1 0,5
> >8 / 32 -> 00001000 " 00000000,01 0,25
> >1/32 lenne a legkissebb szam amit ki kellene jelezni,
> >1 / 32 -> 00000001 " 00000000,00001 0,03125
> >
> >szerintetek hogy is van ez?
> >van erre valami algoritmus?
> hajdu jozsi
>
>
>
>
More information about the Elektro
mailing list