Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Бинарный ужас..
Форумы портала PHP.SU » PHP » Программирование на PHP » Бинарный ужас..

Страниц (1): [1]
 

1. movEAX - 16 Февраля, 2010 - 21:48:43 - перейти к сообщению
Как всем известно 168&-2147483649 = 168
Однако интерпретаторы (5.2.12) у хостеров emaxihost.com и xtreemhost.com думают иначе, возвращая 0. Заглянув под бинарный капот, как у себя так и у хостеров узрел:
(свое железо, 5.2.14)
-2147483649 = 11111111111111111111111111111111,
(хостеры)
-2147483649 = 10000000000000000000000000000000

Где собака зарыта?
2. Мелкий - 16 Февраля, 2010 - 22:02:11 - перейти к сообщению
Может разная разрядность систем? 32 и 64 битки?
3. movEAX - 17 Февраля, 2010 - 07:13:38 - перейти к сообщению
Ну хорошо, даже если это так, то как обойти препятствие?
4. ZeiZ - 17 Февраля, 2010 - 08:21:31 - перейти к сообщению
проблема с знаком "-" ИМХО

У меня в обычном калькуляторе windows:
2147483649 = 10000000000000000000000000000000
-2147483649 = 11111111111111111111111111111111
5. movEAX - 17 Февраля, 2010 - 10:04:28 - перейти к сообщению
ZeiZ пишет:
проблема с знаком "-" ИМХО

Абсолютно верно.. как оказалось записи 168&-2147483649 и 168&2147483649 дают одинаковый результат... Но как изменить это пока не додумался.
(Добавление)
После танцев с бубном и избиения груши пришел к такому умозаключению:
168&(4294967296+(-2147483649)) = 168;
6. JustUserR - 17 Февраля, 2010 - 16:49:49 - перейти к сообщению
movEAX пишет:
4294967296+(-2147483649
Только не понятно что мешает сразу написать +2147483648 которое представляется как - и конечно же надо поннить что в типах значения со знаком всегда значений в минусе не единицу больше - то есть возможный интервал значений от -2147483649 до 2147483648 если об этом речь
7. movEAX - 17 Февраля, 2010 - 22:16:13 - перейти к сообщению
Цитата:
Только не понятно что мешает сразу написать +2147483648

Это переменная на самом деле.
8. JustUserR - 18 Февраля, 2010 - 17:02:55 - перейти к сообщению
movEAX пишет:
Это переменная на самом деле.
В таком случае просто прибавить еденичук - я имел в виду что для целочисленного типа данных да и вообще для любых численных типов со знаком имеется некая симметрия максимального и минимального значения - но в положительном диапазане на единичку меньше (Потому что старший бит занят под знак )

 

Powered by ExBB FM 1.0 RC1