Показать сообщение отдельно

  #6  
Старый 01.09.2009, 17:57
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

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) Не получится сравнивать малые разряды числа с большим порядком. Под мантиссу выделяется строго определенное число бит, остальные числа теряются за счет погрешности

З.Ы. Погрешности компьютерных измерений - достаточно интересная тема, жалко экзамен по этой теме я завалил(
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm

Последний раз редактировалось Gifts; 01.09.2009 в 18:05..
 
Ответить с цитированием