У меня есть массив строковых битов переменной длины, и мне нужно их отрицать.
например.
вход array("1", "00101", "101", "0000")
выход array("0", "11010", "010", "1111")
Есть ли простой способ, как это сделать?
Вы можете сделать это используя strtr функция:
$bites = array("1", "00101", "101", "0000");
$output = array_map(function($element){
return strtr($element, array('1', '0'));
}, $bites);
print_r($output);
foreach ($values as $value) {
$negate = intval($value, 2) ^ 0x7FFFFFFF;
echo base_convert(strval($negate), 10, 2);
}
Этот код будет обрабатывать все целые числа в диапазоне 0..231-1. Поскольку PHP не поддерживает целые числа без знака, 231-1 — это максимальное значение, которое может быть обработано на всех платформах (то есть 32-разрядных и 64-разрядных).
Вы можете использовать значения до 263-1, если ваш код гарантированно работает на 64-битных платформах.