Hej!
Jag vill komma åt specifika bitar i Hi-tech C som nedan:
char variabel;
variabel.2 = variabel.0;
Någon som vet syntaxen för detta i Hi-techs kompilator?
/ Christian
komma åt specifika bitar i Hi-tech C
Re: komma åt specifika bitar i Hi-tech C
Exempel 0)
tmp = ((variabel>>0) & 0x00);
variabel &= ~(1<<2);
variabel |= (tmp<<2);
Exempel 1)
struct {
bit7: 1;
bit6: 1;
bit5: 1;
bit4: 1;
bit3: 1;
bit2: 1;
bit1: 1;
bit0: 1;
} bits;
struct bits *bitscope;
bitsscope = &variabel;
bitscope.bit2 = bitscope.bit0;
Fritt från minnet..
tmp = ((variabel>>0) & 0x00);
variabel &= ~(1<<2);
variabel |= (tmp<<2);
Exempel 1)
struct {
bit7: 1;
bit6: 1;
bit5: 1;
bit4: 1;
bit3: 1;
bit2: 1;
bit1: 1;
bit0: 1;
} bits;
struct bits *bitscope;
bitsscope = &variabel;
bitscope.bit2 = bitscope.bit0;
Fritt från minnet..
Re: komma åt specifika bitar i Hi-tech C
I standard C gör man t.ex. såhär:
Vet ej ifall Hi-tech C hanterar bitvariabler.
Kod: Markera allt
if ((variabel & (1<<0)) != 0) //check if bit 0 is set
variabel |= 1<<2; //set bit 2
else
variabel &= ~(1<<2); //clear bit 2
Re: komma åt specifika bitar i Hi-tech C
i mikroC skriver man variabel.F0 eller .B0 beroende på , kan det vara nåt liknande?
Re: komma åt specifika bitar i Hi-tech C
Standard i C är just som blueint skriver. Om inte Hitec klarar det är det inget C.
Re: komma åt specifika bitar i Hi-tech C
Finns inget inbyggt, men du kan använda följande makron i vilken C-kompilator du vill:Christian skrev:Någon som vet syntaxen för detta i Hi-techs kompilator?
Kod: Markera allt
#define bit_set(var,bitno) ((var) |= 1 << (bitno))
#define bit_clr(var,bitno) ((var) &= ~(1 << (bitno)))