Java中小小取反操作符~引发的“血”案

“血”案…

记录下java中的取反操作符~是如何运算的.

要了解的理论
  1. 在Java中,所有数据的表示方式都是以补码形式来表示
  2. 正数:符号为0 , 原码、反码、补码相同
  3. 负数:符号位为1
  4. 补码 = 反码 + 1
实战取反流程

步骤解析 :

  1. 先表示出当前数值的补码
  2. 求出该值的原码
  3. 进行取反操作得到答案的原码
  4. 将答案原码转成补码即可

举例说明 :

~4 = -5 过程分析

  1. 表示出4的补码

    4的补码: 00000000 00000000 00000000 00000100

    因为正数的 补码=原码=反码 所以补码即原码

  2. 对4的原码取反

    得到答案的原码 : 11111111 11111111 11111111 11111011

  3. 将答案原码转成补码 :

    通过原码得到反码 : 10000000 00000000 00000000 00000100

    补码 = 反码 + 1 :

    10000000 00000000 00000000 00000101

    得到值 : -5

~-3 = 2过程分析

  1. 表示出-3

    -3的补码 : 10000000 00000000 00000000 00000011

    -3的反码 = 补码-1 : 10000000 00000000 00000000 00000010

    -3的原码 = 11111111 11111111 11111111 11111101

  2. 对-3的原码取反操作

    得到答案的原码 : 00000000 00000000 00000000 00000010

    因为首位是0 , 所以是正数 , 原码 = 反码 = 补码

    答案是2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值