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