Strona główna » C++ » Zadania » Operacje Binarne - Zestaw zadań

Operacje Binarne - Zestaw zadań

Wstęp

Poniższy zestaw zadań ma za zadanie sprawdzić wiedzę dotyczącą operacji bitowych. Zadanie zostały posortowane względem poziomu trudności. Zadania powinny być wykonywane w przedstawionej kolejności, ponieważ część zadań łączy się z poprzednimi.

Zadania

Założenia

  1. W zadaniach przyjmujemy, że bity są indeksowane od 0 od najmniej znaczących.
  2. Każda funkcja powinna zostać przetestowana
  3. Wszystkie napisane funkcje powinny rzucać wyjątek Niepoprawne dane jeśli wprowadzone dane są nieprawidłowe.

Zadanie 1

Napisz funkcję o nagłówku int wybierzBit(int val, int ktory), która wybierze ktory bit z wartości val i zwróci tę wartość.

Przykładowo jeśli val = 10112 i ktory = 0 to funkcja zwróci 1, a jeśli ktory = 2 to poprawnym wynikiem jest 0.

Zadanie 2

Napisz funkcję o nagłówku int policzBity(int val, int wartosc), która policzy ile bitów w wartości val to wartosc i zwróci tę wartość.

Przykładowo jeśli val = 10112 i wartosc = 0 to funkcja powinna zwrócić 3.

Zadanie 3

Napisz funkcję o nagłówku int nadluzszyPodciag(int val, int wartosc), która policzy ile jest takich samych bitów wartosc koło siebie i zwróci tę wartość.

Przykładowo jeśli val = 10112 i wartosc = 0 to funkcja powinna zwrócić 1, a dla wartosc = 1 poprawnym wynikiem jest 2.

Zadanie 4

Napisz funkcję o nagłówku int ustawBit(int val, int ktory, int wartosc), która ustawi ktory z wartości val na wartosc i zwróci nową wartość zmiennej val.

Przykładowo jeśli val = 10112, ktory = 1 i wartosc = 0 to funkcja powinna zwrócić 3.

Zadanie 5

Napisz funkcję o nagłówku int wybierzBity(int val, int lewy, int prawy), która wybierze wszystkie bity począwsze od indeksu lewy do prawy włącznie i zwróci je.

Przykładowo jeśli val = 10112, lewy = 1 i prawy = 2 to funkcja powinna zwrócić val = 012.

Zadanie 6

Napisz funkcję int zamienSasiednieBity(int val), która zamieni miejscami każde dwa kolejne bity w wartości val i zwróci nową wartość.

Przykładowo jeśli val = 10012 to funkcja powinna zwrócić 01106.

Zadanie 7

Napisz funkcję int ileIdentycznychBitow(int val1, int val2), która sprawdzi każdą parę bitów o tych samych indeksach w podanych wartościach i zwróci ile jest takich samych bitów na tych samych indeksach.

Przykładowo jeśli val1 = 10012 i val2 = 10112 to funkcja powinna zwrócić 3.