栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 位运算符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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< >> 右移运算

        一个道理

        12>>2

        右移:0000 0011  结果为 :2

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

>>> 无符号位移

只对32和64位有效

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

总结:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445538.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号