Osoby, które programują w PHP i przetwarzają dane na poziomie bitów, korzystając z pełnego zakresu 32-bitowych liczb, powinny szczególną uwagą zainteresować się faktem, że język ten nie obsługuje liczb typu UNSIGNED.
Konsekwencje mogą na pierwszy rzut oka wydawać się prozaiczne i stosunkowo łatwo o tej kwestii zapomnieć, w końcu wszystko zaczyna się po przekroczeniu magicznej liczby 0x 7FFF FFFF.
Przesunięcie bitowe w prawo za pomocą operatora >> powoduje dla liczb większych od wspomnianej wartość powielenie bitu znaku.
W innych przypadkach (kiedy nie operujemy na bitach traktując je jako całościową informację binarną) ten problem nas raczej ominie. Prędzej serwer przerwie wykonywanie naszej aplikacji z powodu nadmiernej ilości zużywanej pamięci, lub przekroczenia czasu wykonywania skryptu.
Jak sobie poradzić z problemem dużych liczb w PHP
Zależnie od potrzeb możemy używać modułu BCMATH, albo wycinać właściwą grupę bitów za pomocą operacji BINARY AND (operator &). Ponieważ funkcje BCMATH operują na łańcuchach reprezentujących liczby, tego typu operacje będą mniej wydajne niż operacje na normalnych liczbach, ale za to dają sporo większe możliwości jeśli chodzi o precyzję obliczeń i zakres wartości.