php位运算的问题

$m=8;$mn=~$m;echo$mn;这个mn按位取反不是8转为二进制1000把0变1把1变0吗。。0111吗。。。按位取反不是这么算的吗为什么结果会是-9... $m=8;
$mn=~$m;
echo $mn;
这个mn按位取反不是 8转为二进制1000 把0变1把1变0吗。。0111吗。。。 按位取反不是这么算的吗
为什么结果会是-9
展开
 我来答
lyz810
推荐于2018-04-15 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31777
前端开发工程师

向TA提问 私信TA
展开全部
并不是4位二进制数取反
取反操作,两个值之和为-1
作为有符号整数,8至少要用8个二进制位表示
00001000,按位取反结果11110111,这个数是有符号整数,则为一个负数的补码,即-9
当你不知道怎么算的时候,就记住一个数与它按位取反结果之和为-1就行了
追问
大神  请问下怎么判断一个数是否为一个负数的补码
追答
计算机里面存的都是补码,不论正负,到正数的补码和原码一样
有符号数最高位是1就是负数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式