data na seriak v C pro jednocip
radek kasal
radekkasal@seznam.cz
Čtvrtek Květen 6 14:37:41 CEST 2004
Dík za příspěvek.
Když jsem psal násobení/dělení v asembleru, tak kód slušně narůstal.
Nějak mam z toho zafixovánu tu náročnost. No a v mém příkladu toho dělní
bylo požehnaně a navíc opakovaně toho samého.
Nejspíše matematicky nejméně náročné je využít postupu jenž mi
zaslal Petr Simek
>>> unsigned int ConvBin2BCD(unsigned int BinInt){ // Konvertuje int
(max
>>> 9999) z bin do BCD
>>> unsigned int BCDInt = 0;
>>> while(BinInt > 999){ BinInt -= 1000; BCDInt += 0x1000; }
>>> while(BinInt > 99){ BinInt -= 100; BCDInt += 0x0100; }
>>> while(BinInt > 9){ BinInt -= 10; BCDInt += 0x0010; }
>>> BCDInt += BinInt;
>>> return(BCDInt);
>>> }
Zkusil jsem to též s sprintf, ale je to trochu žrout na RAM, zase je
univerzalnější.
Radek
> -----Original Message-----
> From: hw-list-bounces@mailman.nethouse.cz [mailto:hw-list-
> bounces@mailman.nethouse.cz] On Behalf Of Bolek
> Sent: Thursday, May 06, 2004 2:18 PM
> To: [HWnews]
> Subject: Re: data na seriak v C pro jednocip
>
> > Doporučíte jak napsat v C rozložení čtyřznakového čísla tak aby to
bylo
> > jednoduché a rychlé? První potřebuji tisíce, pak stovky, desítky a
na
> > závěr jednotky.
> >
> > Pokud by to bylo obráceně, tak je to jednoduché:
> > for(i=0; i<4; i++)
> > {
> > cislice =cislo%10;
> > cislo=cislo/10;
> > };
> >
> > Příklad: cislo = 1234
> > Pak dostanu cislo = 4, následne 3, 2, 1
> >
> > Ja ale potřebuji dostat cislo = 1, nasledne 2, 3, 4
> >
> > Napadá mne jen
> > cislice = cislo/1000;
> > cislo = cislo%1000;
> > cislice = cislo/100;
> > cislo = cislo%100;
> > cislice = cislo/10;
> > cislice = cislo%10;
> >
> > A to je dost matematicky náročné. Též by se nějak dala použit funkce
> > printf, ale jak pro HI-TECH ?
>
> Ten prevod na konci dotazu je matematicky jeste mene narocny, nez ten
> prevod od zadu, ktery vas napadl a zrejme vam vyhovuje. Takze v cem je
> problem?
>
> Pres printf bych to v zadnem pripade nedelal. To bude jeste
narocnejsi.
> Za prve, printf bude delat totez, co ten vas kod, ale navic jeste bude
> muset vyhodnotit formatovaci retezec. Bude to pomalejsi, pametove
> narocnejsi a prilinkuje se vam fura zbytecneho kodu.
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> HW-list@mailman.nethouse.cz
> http://nethouse.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list