JAVA中的位运算操作

1、名词解释

首先,位移运算仅针对整数,非整数不支持位移运算。

①<<:左移操作符,低位补0。

②>>:算数右移符,高位补符号位。

③>>>:逻辑右移符,高位补0。

如果对byte、short类型移位,在移位运算前,它们会先被转成int类型,且返回值也是int类型。如果对long类型移位,则返回值也是long。

2、正负数换算

在java中最高位表示符号位,最高位0代表正数,最高位1代表负数。

用byte数据类型举例,byte占据8个二进制位:

01111111	正数(127)
11111111	负数(-1)
负数的换算方法

已知最高位为1,符号位不变,将其它位取反,然后+1即可得出对应负数。

以byte类型为例:
11111111	先取反->	10000000	再加1->	10000001	得出结果->	-1
10001111	先取反->	11110000	再加1->	11110001	得出结果->	-113
10101010	先取反->	11010101	再加1->	11010110	得出结果->	-86
10000001	先取反->	11111110	再加1->	11111111	得出结果->	-127
已知十进制负数,如何算出二进制原码

符号位不变,将剩下二进制位-1,然后取反即可得出原二进制码。

以byte类型为例:
-1		二进制->	10000001	再减1->	10000000	再取反得出结果->	11111111
-113	二进制->	11110001	再减1->	11110000	再取反得出结果->	10001111
-86		二进制->	11010110	再减1->	11010101	再取反得出结果->	10101010
-127	二进制->	11111111	再减1->	11111110	再取反得出结果->	10000001

3、位移运算演示

因为1字节的byte进行位运算时,会被自动转成4字节的int再进行运算,我们这里直接使用int类型进行演示,方便解读。

  • 演示壹 100<<2=400
    在这里插入图片描述

  • 演示贰 15>>2=3
    在这里插入图片描述

  • 演示叁 1325400064<<2=1006632960
    在这里插入图片描述

  • 演示肆 -1895825408>>2=-473956352
    在这里插入图片描述

  • 演示伍 -1895825408<<2=1006632960
    在这里插入图片描述

  • 演示陆 -1895825408>>>2=599785472
    在这里插入图片描述

4、拓展

  • ~:二进制取反运算。
    演示 ~79=-80
    在这里插入图片描述

  • &:二进制与运算
    演示 75&(-100)=8
    在这里插入图片描述

  • |:二进制或运算
    演示 75|(-100)=-33
    在这里插入图片描述

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值