PHP 按位取反 运算符(~) 到底怎么算出来的? $a = 8 $b = ~$a echo $b 结果是 - 9
8的二进制我手动算了一下....2402202108的二进制是1000,(1*2的三次方+0*2的二次方+0*2的一次方+0*2的零次方)=8为什么...运算符(~)后$...
8的 二进制我手动算了一下....
2 4 0
2 2 0
2 1 0
8的二进制是 1000, (1*2的三次方 + 0*2的二次方 + 0*2的一次方+0*2的零次方)= 8
为什么...
运算符( ~ )后 $b的值 变为: -9 呢??? 展开
2 4 0
2 2 0
2 1 0
8的二进制是 1000, (1*2的三次方 + 0*2的二次方 + 0*2的一次方+0*2的零次方)= 8
为什么...
运算符( ~ )后 $b的值 变为: -9 呢??? 展开
2个回答
展开全部
没错呀 .
<?php
$num = 8;
$format = '%0' . (PHP_INT_SIZE * 8) . 'b';
$bin = sprintf($format, $num);
echo "bin: $bin\n";
$bin = sprintf($format, ~$num);
echo "bin: $bin\n";
?>
输出结果
---------- php53 ----------
bin: 00000000000000000000000000001000
bin: 11111111111111111111111111110111
输出完成 (耗时 0 秒) - 正常终止
~ $num Not(按位非) 将 $num 中为 0 的位设为 1,反之亦然。
不能单拿 1000 来算... 前面还有呢.
<?php
$num = 8;
$format = '%0' . (PHP_INT_SIZE * 8) . 'b';
$bin = sprintf($format, $num);
echo "bin: $bin\n";
$bin = sprintf($format, ~$num);
echo "bin: $bin\n";
?>
输出结果
---------- php53 ----------
bin: 00000000000000000000000000001000
bin: 11111111111111111111111111110111
输出完成 (耗时 0 秒) - 正常终止
~ $num Not(按位非) 将 $num 中为 0 的位设为 1,反之亦然。
不能单拿 1000 来算... 前面还有呢.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询