Sida 1 av 1

komma åt specifika bitar i Hi-tech C

Postat: 15 maj 2011, 16:03:49
av Christian
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

Re: komma åt specifika bitar i Hi-tech C

Postat: 15 maj 2011, 16:26:24
av blueint
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..

Re: komma åt specifika bitar i Hi-tech C

Postat: 15 maj 2011, 16:28:06
av bearing
I standard C gör man t.ex. såhär:

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
Vet ej ifall Hi-tech C hanterar bitvariabler.

Re: komma åt specifika bitar i Hi-tech C

Postat: 15 maj 2011, 18:16:28
av Sonar
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

Postat: 15 maj 2011, 19:16:01
av Icecap
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

Postat: 16 maj 2011, 18:55:15
av bos
Christian skrev:Någon som vet syntaxen för detta i Hi-techs kompilator?
Finns inget inbyggt, men du kan använda följande makron i vilken C-kompilator du vill:

Kod: Markera allt

#define bit_set(var,bitno) ((var) |= 1 << (bitno))
#define bit_clr(var,bitno) ((var) &= ~(1 << (bitno)))