[Algorytmy] Funkcja z operacjami bitowymi

lukee
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 10 maja 2012, o 14:48
Płeć: Mężczyzna
Lokalizacja: Londyn

[Algorytmy] Funkcja z operacjami bitowymi

Post autor: lukee »

Witam serdecznie,

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 
Druga czesc mojego pytanie to czy nawet jesli sie da zrobic cos z tym AND to czy bedzie to funkcja? Pytam poniewaz funkcja "dziala" tylko dla liczb calkowitych. Ulamki nie maja zadnego sensu dla tego wzoru.

Z gory dziekuje i pozdrawiam


ps. po czasie zauwazylem dzial informatyka - byc moze to bardziej trafne miejsce.
Ostatnio zmieniony 12 maja 2012, o 14:17 przez Afish, łącznie zmieniany 3 razy.
Powód: Temat umieszczony w złym dziale. Poprawa wiadomości.
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[Algorytmy] Funkcja z operacjami bitowymi

Post autor: miki999 »

A można spytać po co jest Ci to konieczne?

Na zamianę liczby z systemu dziesiętnego na binarną istnieje w miarę prosty algorytm i nie opłaca się wszystkiego w 1 wzorze zapisywać.
lukee
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 10 maja 2012, o 14:48
Płeć: Mężczyzna
Lokalizacja: Londyn

[Algorytmy] Funkcja z operacjami bitowymi

Post autor: lukee »

Byc moze nie dokladnie sie wyrazilem. Glowny problem to czy da sie w sposob matematyczny wkonac operacje bitowa AND. Przesuniecie tak jak napisalem mozna osiagnac zwyklym dzieleniem przez 2 czy jest jakis rownei prosty sposob na AND?
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[Algorytmy] Funkcja z operacjami bitowymi

Post autor: miki999 »

ANDa ta się zastąpić zwykłym mnożeniem: zobacz jak wygląda iloczyn dwóch liczb binarnych.
ODPOWIEDZ