一个关于位运算的小题目,基础差真可怕

题目:3+4>>2^-8 求结果
解答:思路:a=3+4;b=a>>2;c=b^(-8);
3+4=7,7>>2相当于把7扩大2的2次方倍,为28,^是按位异或运算符,把两个数的二进制形式进行比较,相同的得0,不同的得1,
负数用补码进行运算,正数的原码反码补码一样,
8的二进制为00001000,反码为11110111,补码为11111000(反码+1),则-8表示为11111000,28为00011100(补码),异或运算:
00011100
^11111000
———–
11100100(补码)(第一位为1则为负数)
换算成反码(补码减1)为:11100011 ,想知道这个负数的值,要求其原码,(正数负数互为反码),原码为:00011100(28),所以这个最后的值为-28
注:运算时用补码(正数的原码补码相同,直接用),结果即为计算结果,如果补码前面都是1(首位为1),则为负数,想知道它的10进制数字,转为原码后得到它的正数值来推断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值