Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> operacje bitowe na dużych liczbach, 100 bitów na jedną liczbę i więcej
L_Devil
post
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam. Na mojej stronie chcę stworzyć system tworzenia rang w panelu administracyjnym. Jest z tym problem, bo z każdą rangą muszą wiązać się konkretne uprawnienia do konkretnych operacji.

I nie byłoby w tym nic trudnego (takie uprawnienia to było by jedno pole typi bigint tabelu 'rangi'), gdyby nie fakt że możliwych uprawnień jest ponad 100. Czyli nasza liczba musi zawierać ponad 100 bitów, co ma około 17 cyfer w systemie dziesiętnym (nie wiem ile dokładnie, bo mi kalkulator nie chce liczyć 2^100 tongue.gif ). A maksymalny rozmiast inta w php to marne 32 bity [okołow 2 miliardy w systemie dziesiętnym].

Rozwiązanie wpadło mi do głowy natychmiast - moją sumę bitów zapisywałbym jako string w postaci dziesiętnej - proste, łatwe i klarowne... no i gdzieś w manualu widziałem funkcje do obsługi dużych liczb. Szybko znalazłem to o co mi chodziło: ref.bc" title="Zobacz w manualu php" target="_manual. No i hała dry.gif Nie mogę dokonać nawet prostego zsumowania bitów za pomocą tych funkcji, a jak próbuję normalnie to mi wychodzi około dwóch miliardów, nawet przy zachowanej konwersji do stringa
  1. <?php
  2. $zmienna = (string) WARTOSC1|WARTOSC2 // $zmienna ma teraz wartość około 2 miliardy, jeżeli suma bitowa tych dwóch liczb
     jest większa od dwóch miliardów
  3. ?>
Spróbowałem zatem dać
  1. <?php
  2. $zmienna = (string) (WARTOSC1|WARTOSC2) // $zmienna ma teraz wartość stałej WARTOSC2
  3. ?>

Kicha...

Czy ktoś wie może jak dokonać operacji bitowej na tak dużych liczbach?

Cóż, jeżeli to niemożliwe, będę musiał poszatkować to na paczki, każda po 32 bity... ale nie podoba mi się, bo znowu wymaga to kilku kolejnych pól w tabeli sql...

Będę wdzięczny za wszelkie pomysły i sugestie smile.gif

Ten post edytował L_Devil 31.08.2005, 19:41:17


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 10:14