Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS->PHP] Przepisana funkcja nie działa w PHP, Operacje na bitach
robson_admin
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 10.09.2005

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


Witam,

Przepisałem funkcje z JS do PHP i niestety zwraca mi całkowicie inne wyniki, a co lepsze na każdym serwerze wyniki te są zupełnie inne. Natomiast funkcja w JS na każdym komputerze działa prawidłowo. Wydaje mi się, że nigdzie nie zrobiłem literówki. Potrzebuję otrzymać takie same wyniki w PHP jak w JS.

Proszę o pomoc (IMG:style_emoticons/default/smile.gif)
Z góry dzięki;)


//Problem rozwiązany Proszę zamknąć
// Proponowane rozwiązanie niestety się nie sprawdziło

Ten post edytował robson_admin 4.08.2011, 10:22:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Całość jest trochę pokręcona.

W JS liczby (typ Number) są przechowywane wewnętrznie jako typ FLOAT, który udostępnia 53-bitową (czy coś koło tego) precyzję dla liczb całkowitych. Jednakże wszystkie operacje bitowe (włącznie z przesunięciami) są już realizowane na 32-biotwej reprezentacji argumentów operatora: przykład

W PHP natomiast liczby (całkowite) są przechowywane jako 32-bitowy lub 64-bitowy INTEGER, a operacje na bitach są w ich przypadku przeprowadzone na pełnej reprezentacji tych liczb (czyli ponownie 32 lub 64 bity są brane pod uwagę). Niestety wszystkie serwisy z serii "wrzuć i odpal kod online" jakie znam działają na 32-bitowych maszynach więc bez przykładu. (IMG:style_emoticons/default/wink.gif)

Dlatego też chcąc przenieść ten kod z JS do PHP musiałbyś:
1. Zadbać o to by początkowe argumenty przekazane do funkcji miały dokładnie taką samą reprezentację bitową.
2. W PHP rozróżniać systemy 32-u i 64-o bitowe, co wiąże się z użyciem różnych wartości przesunięć.
3. W PHP na maszynach 64-bitowych wyniki wszystkich operacji bitowych ucinać do ostatnich 32-bitów.

Cytat
niestety to nie jest serwer na Windowsie....
http://pl.php.net/manual/en/gmp.installation.php
A jeżeli nie chce Ci się / nie masz możliwości ponownie komplować może chociaż uda Ci się wrzucić gotowy plik php_gmp.so?

Ten post edytował Crozin 3.08.2011, 15:08:56
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 20:03