bitove pole, pole bitu
Jan Waclawek
konfera@efton.sk
Úterý Leden 27 11:40:22 CET 2009
Zoberie (bez typedef, samozrejme); problemom je, ze takto to ma pomerne maly vyznam lebo s fixnym indexom to nie je problem zapisat priamo (array_of_bit.tmp5).
Povodny problem je vsak zrejme mat variabilny index. Tiez sa na to daju napisat makra typu
uint8_t bit_array[kolko_treba];
#define get_bit(n) ((bit_array[(n) / 8] & (1 << (n) % 8)) ? 1 : 0)
#define put_bit(n, b) {if (b) bit_array[(n) / 8] &= (1 << (n) % 8)) ; else bit_array[(n) / 8] |= (1 << (n) % 8));}
ale nie je to bohvieako pruzne a tiez to je implementacne zavisle.
wek
----- Original Message ---------------
Subject: Re: bitove pole, pole bitu
From: Josef Stengl <ok1ced@nagano.cz>
Date: Tue, 27 Jan 2009 11:24:54 +0100
To: HW-news <hw-list@list.hw.cz>
>Obávám se, ¾e to není mo¾né. C99 specifikace to podle mì nezná.
>
>Mozna preze makro?
>
>typedef struct{
> unsigned char tmp1:1;
> unsigned char tmp2:1;
>...
> unsigned char tmp20:1;
>}array_of_bit;
>
>#define bit_array(n) array_of_bit.tmp ## n
>
>bit_array(5) = 1;
>...
>
>Je to takovy napad, nevim jestli to bude oprabdu fungovat. Na vyzkouseni
>bohuzel nemam cas a hlavne stroj.
>Docela by me zajimalo, jestli by to fungovalo.
>ced
>
>
>
>co¾ ale není to co jste chtìl.... (a pravdìpodobnì to stejnak víte)
>ced
>
>
>Lubo¹ Melichar wrote:
>> Zdravim,
>> znam a pouzivam bitova pole ve strukture..
>>
>> typedef struct{
>> unsigned char tmp1:1;
>> unsigned char tmp2:2;
>> ..
>> }
>>
>> ale potreboval bych ve strukture mit pole bitu..
>> nespravne jsem se to pokousel zapsat nasledovne..
>>
>> typedef struct{
>> unsigned char tmp[20]:1;
>> }
>>
>>
>> prekladac(codevision) je proti, dekuji za nakopnuti..
>>
>>
>
>_______________________________________________
>HW-list mailing list - sponsored by www.HW.cz
>Hw-list@list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list