Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оператор ^ работает по-разному в PHP и JavaScript, работает по-разному в PHP и JavaScript 
V
    Опции темы
02077461
Дата 20.7.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Добрый день!
Второй час дебажу код, нужно перенести функцию из JS в PHP. Добился вот таких результатов:
JS: 43814 ^ -4738698913 = -443704711
PHP: 43814 ^ -4738698913 = -2147439834

В условии можно написать что код на JS -- правильный
с чем это может быть связанно, а главное: как это вылечить? 
Заранее спасибо.

ПС: думал, в какой форум запостить. Решил именно в PHP, т.к. проблема возникла в этом языке.
PM   Вверх
azesmcar
Дата 20.7.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



02077461

Код

<?php
    echo 43814 ^ -4738698913;
?>

у меня выводит -4738672007.

Ты абсолютно уверен что проблема в этом? Проверь еще раз вот этот код.
PM   Вверх
02077461
Дата 20.7.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Примечательно, что если значения сводимые положительные, то результаты совпадают.
Как можно преодолеть проблему?

Добавлено @ 14:50
Я просто сделал echo  и  alert и их результаты поместил сюда:
echo "43814 ^ -4738698913 = " . (43814 ^ -4738698913) . ";\n\n";

alert('43814 ^ -4738698913 = ' + (43814 ^ -4738698913));


Это сообщение отредактировал(а) 02077461 - 20.7.2009, 14:50
PM   Вверх
azesmcar
Дата 20.7.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



02077461

Правильный ответ на это выражение выводит PHP

Цитата(azesmcar @  20.7.2009,  14:43 Найти цитируемый пост)
у меня выводит -4738672007.

посчитай на калькуляторе в виндоуз.
Ошибается JavaScript, скорее всего переполнение (integer overflow).

Добавлено через 49 секунд
можешь проверить этот код? Именно так как есть
Код

<?php
    echo 43814 ^ -4738698913;
?>

PM   Вверх
02077461
Дата 20.7.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(azesmcar @  20.7.2009,  15:00 Найти цитируемый пост)
можешь проверить этот код? Именно так как есть
<?php
    echo 43814 ^ -4738698913;
?>

-2147439834
o_O 


очень странно, если действительно ошибается JS, т.к. свою функцию он выполняет

PM   Вверх
azesmcar
Дата 20.7.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(02077461 @  20.7.2009,  15:03 Найти цитируемый пост)
очень странно, если действительно ошибается JS, т.к. свою функцию он выполняет

убедись, проверь на калькуляторе smile
PM   Вверх
02077461
Дата 20.7.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



У меня вообще выдало -4738698913.
Линуксовый KCalc

PM   Вверх
SneG0K
Дата 20.7.2009, 16:45 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Цитата(02077461 @  20.7.2009,  13:36 Найти цитируемый пост)
^

Это степень? Так тогда там вообще будет не целое число. Оно будет дробное и вообще стремиться к нулю.
PM WWW Skype   Вверх
azesmcar
Дата 20.7.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(SneG0K @  20.7.2009,  16:45 Найти цитируемый пост)
Это степень? Так тогда там вообще будет не целое число. Оно будет дробное и вообще стремиться к нулю. 

Вообще-то это bitwise xor.
PM   Вверх
SneG0K
Дата 20.7.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



azesmcar, Ссори. Ошибся)
PM WWW Skype   Вверх
02077461
Дата 20.7.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



На некоторых машинах работает, на некоторых нет. Больше работает на виндовых. Как заставить это работать пока не разобрался. Даже расширение GMP не спасает.
PM   Вверх
Photon
Дата 21.7.2009, 05:40 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Странно, лично у меня выводит абсолютно одно и то же..  По крайней мере при запуске на отладку в PHP Expert Editor и на локальном серваке (Денвер)

   JS:  43814 ^ -4738698913 = -443704711
PHP:  43814 ^ -4738698913 = -443704711


На UNIX-хостинге (hc.ru):

   JS: 43814 ^ -4738698913 = -443704711
PHP: 43814 ^ -4738698913 = -2147439834

Т.е. это проблема *nix-систем


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
02077461
Дата 21.7.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(Photon @  21.7.2009,  05:40 Найти цитируемый пост)

Т.е. это проблема *nix-систем 
Нет. На нашем *nix хостинге работает, и в тоже время на одной виндовой машине не работает. 
Нельзя же по двум машинах судить обо всех остальных. 


PM   Вверх
icewind
Дата 21.7.2009, 13:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Возможно причина в архитектуре системы... Я проверил вывод с php:
WindowsXP SP3 x86          php 5.1      -4738672007
Linux CentOS 5.3 x86_64  php 5.2      -4738672007
Linux CentOS 5.3 i686       php 5.2      -2147439834
Linux CentOS 5.2 i686       php 5.1      -2147439834


--------------------
user posted image
PM MAIL Skype   Вверх
02077461
Дата 21.7.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



http://bugs.php.net/bug.php?id=47246
Наиболее детальное описание бага. Спасибо всем за участие.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.