Witam. Muszę napisać zbiór, przy użyciu operacji bitowych, np. funkcja dodawania i odejmowania nowego elementu powinna wyglądać tak:
char tab[size];
void add(T elem) {
int pos = elem / 8;
T mask = 1 << (elem % 8);
tab[pos] = tab[pos] | mask;
size++;
}
void del(T elem) {
int pos = elem / 8;
T mask = 1 << (elem % 8);
tab[pos] = tab[pos] & ~mask;
size--;
}
Problemy są takie, że linia tab[pos] = tab[pos] | mask niczego nie przypisuje do tab[pos], ale jezeli bedzie to tablica int to ok (kazano mi użyć char). Drugi problem jest taki, że nie widzę tutaj w ogóle sensu, przesuwam jedynkę w lewo o pare miejsc i co mi to daje? Jak z powrotem odczytać moją wartość? Może jest to całkiem zła droga? Prosze o pomoc.