Trudno mi bylo dobrac odpowiedni dzial dla mojego pytanie. Jesli zadaje je w zlym miejscu z gory przepraszam.
Prubuje przeksztalcic funkcje komputerowa (mam nadzieje, ze to trafne sformulowanie) w funkcje matematyczna. Posiadam zbior A (tablice) liczb calkowitych i dla okreslonego parametru wejsciowego X (liczba naturalna dodatnia) chcialbym dodac niektore z nich do siebie.
\(\displaystyle{ A =\{A_1, A_2,\ldots, A_n\}\\
f \left( x \right) = A_1 \cdot X_1 + A_2 \cdot X_2 +\ldots + A_n \cdot X_n}\)
Liczba przy \(\displaystyle{ X}\) jest pozycja bitu w zmiennej \(\displaystyle{ X}\) a wartosc kazdego \(\displaystyle{ X_n}\) jest \(\displaystyle{ 0}\) lub \(\displaystyle{ 1}\).
Dla przykladu:
\(\displaystyle{ A = \{1,2,3,5,7\}}\)
\(\displaystyle{ X = 13}\) (binarnie \(\displaystyle{ 1101}\) - czyli dodaj pierwsza, druga i czwarta liczbe ze zbioru)
\(\displaystyle{ f(x) = 1 \cdot 1 + 2 \cdot 1 + 3 \cdot 0 + 5 \cdot 1 + 7 \cdot 0}\)
Pierwsza czesc mojego pytania to jak zapisac \(\displaystyle{ X}\)? W informatyce jest to dosyc proste. Jesli chcemy wartosc np. 3 bitu wykonujemy przesuniecie bitowe w prawo o 2 bity a nastepnie operacje AND z wartoscia 1. Samo przesuniecie w prawo jest dosyc proste - wystarczy podzielic przez 2 tyle razy o ile chcemy dokonac przesuniecia. Nie mam pojecia jednak jak wykonac operacje AND.
Jestem w stanie stworzyc cos takiego ale wciaz nie wiem jak pozbyc sie operacji bitowej AND.
Kod: Zaznacz cały
f(x) = A1 * (X AND 0x1) + A2 * (X/2 AND 0x1) + .... + An * (X/(2 * n) AND 0x1
Z gory dziekuje i pozdrawiam
ps. po czasie zauwazylem dzial informatyka - byc moze to bardziej trafne miejsce.