- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
столкнулся со скриптом одним присутствует следующий код там
function mix($a, $b, $c)
{
$a -= $b;
$a -= $c;
$a ^= (zeroFill($c, 13));
return $a;
}
так вот на php 5.2.1 он работает неправильно
вот эта строка $a ^= (zeroFill($c, 13)); интересует что это тут за операнд такой "^="
именно он и глючит
есть идеи у кого ??
xor
$a = $a xor zeroFill()
что это тут за операнд
Операнд - это то, над чем производится операция. А это - оператор :)
http://ru2.php.net/manual/ru/language.operators.assignment.php
or you could use the xor-assignment operator..
$a ^= $b;
По логике вещей должно быть равнозначно: $a = $a ^ $b;
^ - оператор побитового исключающего ИЛИ.
Гляньте еще вот это:
http://www.yaldex.com/wjscript/jsoprxorequ.htm
для примера
<?
$a = 4523419682;
$a = $a - 4608221683;
$a = $a - 4653896912;
$a ^= 43814;
?>
на 5.0.3 выдает -443704711
на 5.2.1 выдает -21474398348
не пойму что к чему :/
кароч понял ... нада пенать хостера пусть устанавливает нармальный релиз
К сожалению, под рукой нет нескольких версий PHP.
Протестил в JavaScript (FF), получилось -443704711 - т.е. похоже в PHP 5.2.1 действительно бага.
Проверьте, кстати, может дело именно в присвоении - посмотрите что покажет
Вы сделаете доброе дело, запостив багрепорт вот сюда:
http://bugs.php.net/report.php
:)
нашел саму траблу
раз побитовое. значит пробуем
decbin(-4738698913) - на выходе имеем 11100101100011010011000101011111
в а 5.2.1 на выходе получается 10000000000000000000000000000000
вот суть в этом ... не знаю как обозвать
а сама операция работает нармуль
<?
$a = -4738698913;
$b = 43814;
echo decbin($a) . "\n";
echo "xor\n";
printf("1%0" . (strlen(decbin($a)) - strlen(decbin($b)) - 1) . "s", "");
echo decbin($b) . "\n";
echo "=\n";
echo decbin($a ^ $b) . "\n";
/*
PHP 5.0.3 - Normal result
11100101100011010011000101011111
xor
10000000000000001010101100100110
=
11100101100011011001101001111001
PHP 5.2.1 - Bad result
10000000000000000000000000000000
xor
10000000000000001010101100100110
=
10000000000000001010101100100110
*/
?>
не бага это. и не от версии пхп зависит
все дело в битности процессора, на одном у тебя 32 бит, на другом 64 бит вот и вылезает
ну и на каком должен работать нармально ??
ничего что побитовые операции там тоже неправьльно выполняются