в общем, интереса ради хотелось бы узнать, как происходит работа при выполнении операции "исключающее или" (см. также "сложение по модулю-2) со строками? в мануале сказано: в случае если операнды являются числами все ясно, они преобразовываются в свой эквивалент в двоичной системе и дальше уже по правилам того или иного оператора выполняются вычисления. например 5 & 7 = (101 & 111) = (101) но если это строки, то идёт преобразование в ascii-эквивалент, а что дальше? ну, что-то въехать не могу. ведь там диапазон от 0 до 255 - все эти числа преобразовываются в двоичное представление?.. или он просто от 57 отнял 49 (если брать цифры с вышеприведенного примера). крч, яннп.
49 = 0011-0001 57 = 0011-1001 49^57 = 0000-1000 = 8 ксор он как бы включает биты которые РАЗНЫЕ а все остальные биты получают нулевое значение.
ага, то есть интерпретатор берет ascii-эквивалент строки и дальше просто в двоичном виде выполняет указанные мною действия, понял. ещё вопрос: почему он взял только символ "1" из строки "12"?
возможно выполнить операцию дизъюнкции или конъюнкции, а уже результат использовать как один из операндов для ксора. я, конечно, могу предполагать как оно должно было обработать, но оно обработало именно так - и это главное. я должен понять почему)
есть строка "12", каждый символ которой переводим в ascii-эквивалент, т.е. 49 и 50 соответственно. 49 в двоичной системе счисления 0011-0001 (1*2^5 + 1*2^4 + 1) 50 в двоичной системе счисления 0011-0010 (1*2^5 + 1*2^4 + 2) есть строка "9" имеющая всего 1 символ, в ascii-эквиваленте которая равняется 57. 57 в двоичной с.с. : 0011-1001(1*2^5 + 1*2^4 + 1*2^3 +1) как я сказал выше, "12" может быть подвергнуто дизъюнкции, тогда: либо конъюнкции, тогда: ну, и полученный рез-ат применять в выражении result ^ 0000-1000
у тебя одна строка в два байта и одна строка в один байт. выравнивание идет по короткой последовательности. то есть будет взято от длинной стоки столько байт сколько в короткой. сделай например: '12' ^ '91' - обработает оба байта '12' ^ '911' - обработает опять оба байта
интересно. как это ты такое вычислил? ) в теме мануала, касающейся побитовых операций, такого не описывается
банально в скрипте напиши три строки да посмотри какая между ними разница))))))))) на самом деле ключевые слова "выравнивание" и "порядок байтов" думаю тебе дадут немного интересной информации для размышления.