C rejtelmek / bitmezo teszt
Fuzesi Arnold
arnold.fuzesi.lista at gmail.com
Thu Mar 1 12:27:19 CET 2007
Oké, csak most tartok 15 bitmezőnél (nem mind 1 bites, integernel nagyobb az
egész), és ez még bőven nőni fog.
Elég tréül néz ki ha vagyolom, illetve ha egy új taggal bővül, akkor lehet
egy csomó helyre adminisztrálni, pl bele ebbe a vagy kapcsolatba.
Közben rájöttem a pointeremmel az a gond, hogy ha nem n*8 bit szeles a
bitmező, hanem pl n*8bit-2, akkor a maradek 2 bit helyen fogalmam nincs
mivan...
A.
----- Original Message -----
From: "Papp Zoltán" <zombi at c2.hu>
To: <elektro at tesla.hu>
Sent: Thursday, March 01, 2007 8:44 AM
Subject: Re: C rejtelmek / bitmezo teszt
Cs, Március 1, 2007 1:41-kor Fuzesi Arnold írta
> Idevágó kérdés:
>
> Adott egy bitmező, azt szeretném vizsgálni hogy valamelyik tagja más-e
> mint
> nulla.
>
> union-nal fapados a dolog, mert ahogy bővül a mező kézzel kell a uniont is
> hozzáállítgatni.
> Illetve sizeof-al lehetne bűvészkedni, de ha már pl. 80 bites a bitmezőm
> összesen, akkor nem lesz hozzá elég széles egész változó amit egyben
> tudnék
> vizsgálni hogy az nulla-e.
>
> Hogyan elegáns?
> Simán egy pointerrel végigszaladni sizeof(bitmező)-ig?
>
> Kösz,
> Arnold
A pointer szerintem működik, csak bájt vagy integer-szinten, egyszerűen
"össze-VAGY-olod" a bitmező bájtjait (vagy ha >8 bites a proci, akkor
talán az integereit), és ha az eredmény>0, akkor valamelyik bit>0.
Bár lehet, hogy ilyen szinten már érdemes egyből vizsgálni a >0 feltételt,
mert így egyből megvan az a bájt/integer, amiben van 1.
Avagy ha a bitmezőben lévő bitek flag-ként működnek (és te állítod őket
programból), akkor kinevezel egy Global Flag-et, amit szintén 1-be
állítasz, ha bármelyiket 1-be állítod.
Üdv
--
Papp Zoltán
OneWay Electronics - www.onewayelectronics.hu
Hangszerviz - www.hangszerviz.hu
--------------------------------- Hirdetés ---------------------------------
Mi a C2? http://mail.c2.hu
-----------------------------------------
elektro[-flame|-etc]
More information about the Elektro
mailing list