java 位运算符

前言

        做java那么多年,基础运算符,三目运算符,逻辑运算符等等都是用得很多,第一次听说位运算符还是看面试题了解的,当然也没有详细去了解,其实用得比较少吧,不过看到了还是有必要记录一下。

 位运算符:

        一个七个

        &(与)   |(或)   ^(异或)  ~(取反)  >>(右移)   <<(左移)  >>>(无符号右移)

        java中的位运算符只针对二进制,所以也可称为二进制运算符,也就说我们使用位运算的时候,需要将值转换成二进制,在去比较。

        注意一下,二进制中1 我们认为是true  0表示false

& 与运算符

        比如我们 4&7 如何运算

        先将4和7分别转换成二进制的数据(因为一个字节有8位,所以前面不足的补 0)

        

        再一列一列的比较  

                两个都为true(1) 该列结果为1

                其中一个false(0) 该列结果为0  有点类似 && 与

                那么结果:0000 0100  再换算成10进制  刚好也是 4

| 或运算符

        这个就和上面的类似了如:

        4 | 7

         

        一样的比较

                两列都为 false(0) 结果false(0)

                随意一列为true(1) 结果为 true(1)

                结果可见 0000 0111  为:7

^ 异或运算符

        4^7

        

        这个比较方式是:

                两个相同:false(0)

                两个不同:true(1)

        结果:0000 0011  为:3

~ 取反运算

        ~7

        

        运算方式:

                原来是1 取0 原来是0就取1

                结果:0000 1000  

                注意:二进制中,最高位是符号位   1表示负数,0表示正数

                所以结果应该是  -8

                可以这样记: ~n  =  -(n+1)     ~-n = n-1

<< 左移运算

        就是把这个数左移几位:

        12 << 2

        12的二进制 : 0000 1100

        左移变成了      0011 0000   (后面补0)

        结果是 96

        记忆: m<<n      等于   m*2^n    (数学运算:m*(n*n))

>> 右移运算

        一个道理

        12>>2

        右移:0000 0011  结果为 :2

        记忆:m>>n   等于 m/2^n

>>> 无符号位移

只对32和64位有效

在移动位的时候与右移运算符的移动方式一样的,区别只在于补位的时候不管是0还是1,都补0

总结:

        位运算符不常用,偶尔面试会提到。作为记忆吧,以后忘了可以回顾一下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值