ПРоблема с XOR ^

ZloiJoker

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

<?php

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

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


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

Почему вообще разные результаты ?
 

domino

Новичок
э-э.. может я не в тему.. а как там с разрядностью на никсовом хостинге? или это пофиг?
 

alexhemp

Новичок
возможно дело в опциях компилятора - под Unix int - 32-битный, а под Win 64 битный.

Пиши багрепорт :)
 

ZloiJoker

Новичок
оба 32 бит
если положительные числа то результат одинаковый
 

Profic

just Profic (PHP5 BetaTeam)
Почему вообще разные результаты ?
Потому что в таком случае имеет место 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]
 

ZloiJoker

Новичок
Хочется чтобы везде было: -443704711 (ну это в данном случаем вообще то там переменные используюстя)
т.е резульаь совпадал с виндовс результатами.
 

SiMM

Новичок
PHP:
echo ((int)-4738698913^(int)43814)&0xFFFFFFFF;
PS: вообще-то вопрос был - зачем. Т.е. требовалось описать задачу, на кой ляд это кому-то может быть нужно. Ибо не представляю, где это может быть важно.
 

ZloiJoker

Новичок
echo ((int)-4738698913^(int)43814)&0xFFFFFFFF;
Резулльтат тот же в вин другой результат.

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