gpt4 book ai didi

php - 二进制数的相反数

转载 作者:行者123 更新时间:2023-12-02 21:55:48 24 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/

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