PHP-Не могу понять, что происходит в этой строке кода - PullRequest
0 голосов
/ 31 марта 2011
        for($reg3=0; $reg3<128; $reg3++)
        {
             $reg1[$reg3] = $reg1[$reg3] ^ ($reg6[$reg3+256] & 1);
        }

Я действительно не понимаю, что здесь происходит $reg1[$reg3] ^ ($reg6[$reg3+256] & 1); и что бы это был vb.net эквивалентный код.

Ответы [ 3 ]

3 голосов
/ 31 марта 2011

Он выполняет побитовое XOR между двумя операндами, один из которых получается путем применения побитового И к двум другим операндам.Кроме этого, это стандартные индексы массива и дополнение.

Код VB.Net будет точно таким же , если типы выражений поддерживают эти операторы (мы не знаем, чтозначения переменных равны).

1 голос
/ 31 марта 2011

& является побитовым И оператором.

^ является побитовым XOR оператором.

1 голос
/ 31 марта 2011

^ и & - двоичные / побитовые операторы - подробнее здесь: Битовые операторы

^ - Xor (эксклюзив или)
& - И

Я предполагаю, что это перекомпилированный код или запутанный - если нет, то некоторые ужасные имена переменных.

Переключение на более традиционные имена переменных: $reg3 -> $i, $reg1 -> $a, $reg6 -> $b, получаем:

for($i=0; $i<128; $i++) {
   $a[$i] = $a[$i] ^ ($b[$i+256] & 1);
}

Проходит первые 128 элементов массива (или, возможно, строки) $a. Для каждого элемента XOR это (^ ($b...) только с последним битом (& 1) элемента в массиве (или строке) $b, что на 256 позиций дальше. $a должно содержать не менее 128 элементов, $b должно содержать не менее 384 элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...