![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
в JavaScript есть такой код
6537379050^1797494240, резутат -292829726 если пишу тоже самое на perl, то результат 2497473055 Что это (^) за действие ? Почему результаты разные, и как их сделать одинаковыми, что в Perl поправить ? P.s. ой, не туда вопрос, промазал... модеры прошу перенести... как я понимаю, это должно быть в системном... Это сообщение отредактировал(а) admsasha - 21.5.2007, 18:10 |
|||
|
||||
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Вообщем надо вот эту функцию переписать, может у кого идеи есть....
|
|||
|
||||
Ivan Kolesnikov |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 2 Всего: 6 |
Твой пост меня заинтересовал... решил разобраться.
Операция которую ты здесь привел - это побитовый xor Теперь почему разные результаты. Правильный результат:
Как видно результат больше 2^32 и Javascript приводит его к 32 разрядам
Теперь о Perl. Он делает совсем хитро, так как 1-е число не помещается в 32 разряда, он заменяет его максимальным 32 разрядным беззнаковым, то есть 2^32-1 = 4294967295 Получается
--------------------
|
||||||
|
|||||||
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
А идеи есть как javascript код, написать на perl ? (JavaScript код подогнать под perl вроде как получиться, а вот наоборот :-( )
т.е. результаты должны быть одинаковы... но Javascipt код менять нельзя. Это сообщение отредактировал(а) admsasha - 24.5.2007, 15:17 |
|||
|
||||
Ivan Kolesnikov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 2 Всего: 6 |
Вот что я придумал
Оно не совсем в стиле Perl (можно наверное покороче), но на приведенных тобой парах работает, на других не знаю не проверял... --------------------
|
|||
|
||||
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
||||
|
||||
Ivan Kolesnikov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 2 Всего: 6 |
Сори... чуть-чуть ошибся
Здесь 2 эквивалентные реализации функций, во 2-й меньше действий, а 1-я понятнее. Это уже готовые функции, для того чтобы в 1-й оставить только xor необходимо закоментировать условие ![]() --------------------
|
|||
|
||||
admsasha |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Если кому интересно.
Добавлено через 1 минуту и 56 секунд Ivan Kolesnikov, Странно, но вывод всё равно
|
||||
|
|||||
Ivan Kolesnikov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 2 Всего: 6 |
admsasha, я запустил приведенную тобой функцию foo для javascript (вместе с условием в конце) ее результат 4002146570
А вообще твой вариант с остатком от деления лучше моего, так как при больших числах мой вариант будет работать очень долго Это сообщение отредактировал(а) Ivan Kolesnikov - 25.5.2007, 13:20 --------------------
|
|||
|
||||
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Ivan Kolesnikov, интересно.. а какой браузер ?
|
|||
|
||||
Ivan Kolesnikov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 2 Всего: 6 |
Сейчас проверил в IE7, Opera 9, Firefox 2 везде результат один 4002146570.
Запускаю следующую страницу
Это сообщение отредактировал(а) Ivan Kolesnikov - 25.5.2007, 13:37 --------------------
|
|||
|
||||
admsasha |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Ivan Kolesnikov, Разобрался, это я не так считал...
я в примере то давал только результат word1^word2, а так, да формула вроде верная. Спасибо. Вообщем тема пока закрыта. Вроде как всё работает. Это сообщение отредактировал(а) admsasha - 25.5.2007, 14:05 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |