Я беру 2 числа. Если по длине одно меньше, то дополняю нулями спереди. Само сравнение по цифрам делаю с конца. Всё верно?Автор оригинала: dimagolov
п.с. а ты как результат формируешь? его переворачивать не забываешь (или дописывать в начало)? ну и недостающие разряды в одном из операндов считать 0-и нужно не забывать...
Автор оригинала: Вурдалак
Код в студию.![]()
function my_xor($a, $b)
{
$len = 0;
$len_a = strlen($a);
$len_b = strlen($b);
if ($len_a > $len_b) {
$len = $len_a;
} else {
$len = $len_b;
}
$res = '';
for($i=$len-1; $i>=0; $i--)
{
$a_ch = isset($a{$i}) ? (int)$a{$i} : '0';
$b_ch = isset($b{$i}) ? (int)$b{$i} : '0';
if ($a_ch == $b_ch) {
$res .= '0';
} else {
$res .= '1';
}
}
$rev = '';
for($i=strlen($res)-1; $i>=0; $i--)
{
$rev .= $res{$i};
}
return $rev;
}
echo my_xor('11101101100010111100001110100000000000', '111011011000101111000011101000000000');