pole bitového pole v C

Jan Waclawek konfera na efton.sk
Sobota Leden 12 15:45:12 CET 2013


> je to vlastně pole char[3], chtěl bych napsat něco univerzálního, kde bych
> zadal ukazatel na počátek pole, jaký bit nastavit např.14.
> 
> Nějak mě nenapadá žádný elegantní způsob. Ale zase, někde jsem to někde
> viděl v asm pro PIC. Míra 

#include <stdint.h>
uint8_t bits[3]

void SetBit(uint8_t * bitfield, uint8_t idx, _Bool value) {
uint8_t mask;
  mask = 1 << (idx % 8); 
  if (value) {
    bitfield[idx / 8] |= mask;
  } else {
    bitfield[idx / 8] &= (~mask) & 0xFF;
  }
}

_Bool GetBit(uint8_t * bitfield, uint8_t idx) {
  return (_Bool)(bitfield[idx / 8] & (1 << (idx % 8))
}

wek
wek


Další informace o konferenci Hw-list