d_x К сожалению, вы заблуждаетесь. Разделение int32 и int64 - в ПХП нет. int - может быть 64 разрядным на _некоторых_ системах, но на руках мы опять-таки будем иметь число от -2^63+1 до 2^63-1 (или -2^31+1 до 2^31-1 но никак не ^32) за счет того, что беззнаковых целых в ПХП - нет. Плюс сам ПХП для винды - x86 по дефолту, сделать поддержку 64 бит - поленились.
Далее шаманство с числами. Любое число выходящее за пределы PHP_INT_MAX - автоматически приводится к типу float. Возьмем любой пример:
PHP код:
$a=4294967294;
echo gettype($a)."<br>\n";
$b = pow(2,32); // Для виндов и прочих 32битов
echo gettype($b)."<br>\n";
// И даже так не прокатит, потому что мы уже выходим за пределы целых чисел
$c = pow(2,31)-1;
echo gettype($c)."<br>\n";
// Но при этом
$d = 2147483647;
echo gettype($d)."<br>\n";
Итак, раз переменные у нас с плавающей точкой, то и притензий предъявлять не можем:
1) Не получится играться с битовыми операциями, ибо
Bitwise operators allow evaluation and manipulation of specific bits within an integer. (c) http://ru.php.net/manual/en/language.operators.bitwise.php
Оператор приводит оба числа к целому типу, а тут уже имеет место то самое
echo (int) ( (0.1+0.7) * 10 ); // Получаем 7!
2) Не получится сравнивать малые разряды числа с большим порядком. Под мантиссу выделяется строго определенное число бит, остальные числа теряются за счет погрешности
З.Ы. Погрешности компьютерных измерений - достаточно интересная тема, жалко экзамен по этой теме я завалил(