[elektro] Munka (C kérdés)

Acs Gabor agabor at electrodesign.hu
Sat Sep 17 21:56:05 CEST 2011


És vajon melyik a leggyorsabb?
Lehet hogy az &&0xffff ? Bár mostmár nem vagyok benne biztos, hogy ebben 
az esetben működik.


Gábor

2011.09.17. 17:55 keltezéssel, hg12345 írta:
> Köszönöm,
> pont ezt kerestem, hogy miért igy csinálja.
>
> Amúgy sokkal egyszerűbb<0xFFFF feltétellel vizsgálni...
>
> Üdv
>
>
> Andrei Purdea<purdea.andrei at gmail.com>  írta:
>>> Ez miért nem müködik?>
>>>
>> uint16_t  count;>
>> if (~count)>
>>   count++;>
>>
> http://std.dkuug.dk/jtc1/sc22/open/n2794/n2794.pdf>
> nézd a 70-es oldalon (82-es pdf oldal) a 4-es bejegyzést>
> A C99 standard szerint, negálás előtt a count változó promoválva van>
> egy 32bites tipusra.>
> Mivel unsigned (uint16_t), ezért ez azt jelenti hogy balról meg van>
> tűzdelve egy rakás zéróval, ami mindig zéró marad. A ~count ezért>
> mindig non-zéró marad, tehát igaz.>
> Az újracastolás helyett egy másik megoldás: Ha a változód tipusa>
> int16_t (signed), akkor a promóció alkalmával sign-extended lesz,>
> mármint>
> a sign bit-el van megtűzdelve balról. így amikor count=0xffff, akkor>
> promoted formában 0xffffffff. És a count nincs növelve amikor eléri a>
> 0xffff-t (vagyis a -1-et)>
> ----------------------------------------->
>            elektro[-flame|-etc]>
>
>
> -----------------------------------------
>            elektro[-flame|-etc]
>
>   _____________ NOD32 6433 (20110903) Információ _____________
>
> Az üzenetet a NOD32 antivirus system megvizsgálta.
> http://www.nod32.hu
>
>
>



More information about the Elektro mailing list