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