Witam !
Mam problem z programem. Potrzebuje pomocy - głównie chodzi mi o pierwszą funkcję, za która zupełnie nie wiem jak mam się zabrać, żeby uzyskać właściwy format maski.
Napisz program, który będzie składał się z 3 funkcji:
-
Funkcja tworząca maskę, maskowanie(int N, int M, int P)
przyjmuje N - ilość jedynek, M - ile zer, P - ile powtórzeń.
Przykładowe wywołania:
maskowanie(1,2,1) -> wynik bitowo -> 100
maskowanie(2,3,3) -> wynik bitowo -> 110001100011000 -
Funkcja sprawdzająca, który jest najwyższy bit, licząc od prawej strony.
jeśli liczba = 15 (1111), to
ktoryBit(liczba) -> zwróci -> 4
jeśli liczba = 64 (1000000), to
ktoryBit(liczba) -> zwróci -> 7
Można to osiągnąć np. przesuwaniem liczby w prawo i sprawdzaniem odpowiedniego warunku. -
Funkcje negująca i ustawiająca. Przyjmuje parametr, np. typu int (0-neguj, 1-ustaw).
Ogólnie program ma działać w ten sposób, że wczytujemy z konsoli liczbę. Maskujemy od najwyższego bitu w prawo (Najwyższy bit maski pokrywa się z najwyższym bitem liczby).
Jeśli najwyższy bit jest mniejszy od długości maski (np. liczba = 64, czyli ktoryBit() zwraca 7, a maska ma długość 8) - to wyświetlamy komunikat i nic nie robimy.