Witam. Mam na uczelni do zrobienia zadanie ale prowadzący nie o końca potrafił mi wyjaśnić o co chodzi.
Wklejam treść, może ktoś miał styczność z czymś podobnym i mi pomoże. Chodzi o pkt 6. Resztę zrobiłem.

  • TODO
  • stworzyc typ danych bitowy (bitset) (tablica zero jedynek), ale
  • tablicowy, czyli przechowujacy wiele wartosci i funkcje do oblsugi opisane
  • w pliku bits.h
    1. zaimplementowac funkcje opisanych w pliku bits.h, gdzie jeden element
  • tablicy (jeden bajt) odpowiada, za jedna wartosc.
    1. napisac funkcje wypisujace bitset zerojedynkowo (zeby sprawdzac czy bity
  • ustawiono poprawnie)
    1. napisac test jednostkowy (gotowa funkcja assert z assert.h)
  • sprawdzajaca poprawnosc funkcji. Dla ustawionych kilu bitow sprawdzic czy
  • funkcja zwraca niezero dla tych bitow i zero dla pozostalych
    1. Dopisac nowy typ i funkcje, ktore bed¹ operowac juz na bitach (jeden
  • bajt=8 wartosci) (nowe nazwy funkcji, typu)
    1. Przepisac funkcje, zeby byly makrami. Dla makr, które maj¹ zwracaj¹
  • wartosc skorzystac z: http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
    1. (DLA CHETNYCH) Rozszerzyc typ oraz funkcje z zadania 4. tak by pamiec
  • byla alokowana dynamicznie (tablica intow); dopisanie funkcji: void *
  • bit_create(int n); ktora bedzie korzystala z wyimagonego, tylko jej
  • wiadomego typu (tez jakas niejawna struktura rzutowana na void*). Dla
  • otoczenia bedzie "(void*)" ktora bedzie zawierala limit wartosci a funkcje
  • beda sprawdzaly czy limit nie zostal przekroczony.
  • konieczne operatory i funkcje do wykonania zadania:
  • & | ~: operatory bitowe (materialy do zajec #3)
  • << >>: przesuniecia bitowe (materialy do zajec #3)
  • assert: sprawdza czy argument nie jest zerem. Jesli jest konczy program
  • podajac linie w ktorej program sie skonczyl
  • (TYP): rzutowanie, zmiana typu (potrzebne do zad. 6)
  • & *: uzyskanie adresu do zmiennej, zmiennej z adresu
    */

a tutaj bits.h

struct bit_set {
char tab[10];
};
void bits_set(struct bit_set * val, int n); // ustawienie n-tego bita na jeden
void bits_unset(struct bit_set * val, int n); // ustawienie n-tego bita na zero
int bits_isset(struct bit_set * val, int n); // sprawdzenie czy n-ty bit jest jedynka
int bits_count(struct bit_set * val); //sprawdzenie ile bitow jest jedynka
int bits_all(struct bit_set * val); //sprawdzenie czy wszystkie bity sa jedynka
int bits_any(struct bit_set * val); // sprawdzenie czy jakikolwiek bit jest jedynka
void bits_reset(struct bit_set * val); // ustawienie wszystkich bitow na 0
void bits_show(struct bit_set * val); // wyswietlanie