gpt4 book ai didi

php - 与二进制数相反

转载 作者:行者123 更新时间:2023-12-02 04:56:51 25 4
gpt4 key购买 nike

我有一个二进制数 11000 我需要翻转数字才能得到答案 00111我需要在 PHP 中得到结果,我使用 for 循环完成了但是我如何使用按位运算符来完成我认为我们可以使用 ^ 运算符来完成这是 PHP 解决方案:

function getIntegerComplement($n) {
// $n is a decimal number
$binary = decbin($n);
$arr = str_split($binary);

$complement = "";
foreach($arr as $i)
$complement .= ($i == 0) ? (1) : (0);
}

我们将不胜感激

最佳答案

如果您对整个 int 取反,您将得到一个负数:因为 int 由 32 位组成(通常),并且所有这些都将被取反。而当第 1 位变为 1 时,php 会将其视为负数。你只想否定最后 5 位。到这里就完成了,使用 $val + $mask (mod 2):

<?php
$val = bindec('11000');
$mask = bindec('11111');
$val = $val ^ $mask;

print sprintf('%05d', decbin($val));

正如预期的那样打印 00111。

关于php - 与二进制数相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com