Java位运算符学习

目录

前言

运算符

        1、与(&)

        2、或(|)

        3、异或(^)

        4、取反(~)

        5、左移(<<)

        6、右移(>>)——有符号

        7、无符号右移(>>>)


前言

        位运算符有 与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)、无符号右移(>>>)。位运算其实就是二进制的运算,加减乘除适用于十进制,而位运算就是二进制的运算。如果是非二进制数使用位运算符,系统会自动转换成二进制再进行运算。

        //使用Integer的toBinaryString(...)方法打印计算的二进制值
        System.out.println(Integer.toBinaryString(~11));

运算符

        1、与(&)

概念:两个操作数中的位都为1,结果才为1,否则结果为0。如下图

代码实践结果运算过程

image

        2、或(|)

概念:两个操作数中的位只要有一个为1,那么结果就是1,否则就为0。如下图

代码实践结果运算过程

image

        3、异或(^)

概念:操作数中的位相同,则结果为0,不同则结果为1。如下图

代码实践结果运算过程

image

        4、取反(~)

概念:操作数中的位,如果是1,取值0;如果是0,取值1。如下图

代码实践结果
运算过程

 注意:正数的补码,反码都是其本身。 

        5、左移(<<)

概念:左移就是把所有位向左移动指定的位。如下图

代码实践结果运算过程

image

        6、右移(>>)——有符号

概念:左移就是把所有位向右移动指定的位(负数右移有5步)。如下图

正数或负数代码实践结果运算过程
正数

image

负数
负数 

 

        7、无符号右移(>>>)

概念:“无符号”右移位运算符 >>>(不保留最高位符号位,最高位始终补 0)
比如:9 >>> 2

1. 将      0000 0000 0000 0000 0000 0000 0000 1001 进行右移两位,高位补 0
2. 结果为:0000 0000 0000 0000 0000 0000 0000 0010 = 2

比如:-9 >>> 2——负数是正数反码后的补码右移。

1. 先将 -9的绝对值转为二进制:
              0000 0000 0000 0000 0000 0000 0000 1001
2. 反码: 1111 1111 1111 1111 1111 1111 1111 0110
3. 补码(将反码后的值加 1):1111 1111 1111 1111 1111 1111 1111 0111
4. 进行右移两位,高位补零
5. 结果为:0011 1111 1111 1111 1111 1111 1111 1101 = 1073741821

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值