ПРоблема с XOR ^

ZloiJoker

Новичок
ПРоблема с XOR ^

<?php

echo((int)-4738698913^(int)43814);
?>
на локальной вин машине:
-443704711

На никсовом хостинге:
-2147439834


Хочется чтобы везде было: -443704711

Почему вообще разные результаты ?
 
э-э.. может я не в тему.. а как там с разрядностью на никсовом хостинге? или это пофиг?
 
возможно дело в опциях компилятора - под Unix int - 32-битный, а под Win 64 битный.

Пиши багрепорт :-)
 
Почему вообще разные результаты ?
Потому что в таком случае имеет место undefinded behavior.
The size of an integer is platform-dependent, although a maximum value of about two billion is the usual value (that's 32 bits signed). PHP does not support unsigned integers.
If you specify a number beyond the bounds of the integer type, it will be interpreted as a float instead. Also, if you perform an operation that results in a number beyond the bounds of the integer type, a float will be returned instead.
Все (с) [m]types.integer[/m]
 
Хочется чтобы везде было: -443704711 (ну это в данном случаем вообще то там переменные используюстя)
т.е резульаь совпадал с виндовс результатами.
 
PHP:
echo ((int)-4738698913^(int)43814)&0xFFFFFFFF;
PS: вообще-то вопрос был - зачем. Т.е. требовалось описать задачу, на кой ляд это кому-то может быть нужно. Ибо не представляю, где это может быть важно.
 
echo ((int)-4738698913^(int)43814)&0xFFFFFFFF;
Резулльтат тот же в вин другой результат.

есть алгоритм(выдумывал его не я :( ), каторый надо реализовать на пхп.. и там есть такие расщеты..
 
Сверху