Java中的~运算符号

最近做的笔试题中出现这样一道题:
 

题目:What results from the following code fragment?

    int i = 5;

    int j = 10;

    System.out.println(i + ~j);

    A Compilation error because”~”doesn’t operate on integers

    B -5

    C -6

    D 15

答案是C。原来~是按位取反

10的原码:      0000 0000 0000 1010

由于在计算机中以补码形式存储,又正数的补码就是原码本身,所以计算机可以直接计算~10

~10按位取反:1111 1111 1111 0101

那还是计算机中以补码形式存储,所以当前的计算后的~10是补码形式,我们要对其求原码,又因为负数的补码是原码按位取反再加1,所以,我们可以得到反码(补码减1)

~10的反码:  1111 1111 1111 0100

~10的原码:  1000 0000 0000 1011

所以~10是-11在计算机的补码,所以最终答案是C。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值