位运算指的是针对整数的二进制进行的位移操作。

位运算提供比算术运算更高的效率,但是位运算的代码可读性较差,建议所有使用位运算的地方写上注释。

Java中提供7个位运算符用于位运算。

左移(<<)

左移运算是将操作数二进制值逐位左移若干位,左移过程中符号位不变,高位溢出则舍弃,低位则补0。

范例 结果 范例 结果
00000001<<2 00000100 10000001<<2 10000100
01100001<<2 00000100 11100001<<2 10000100

右移(>>)

右移运算是将操作数二进制值逐位右移若干位,右移过程中符号位不变,低位溢出则舍弃,并用符号位补溢出的高位,即负数补1,正数补0。

范例 结果 范例 结果
00000100>>2 00000001 10000100>>2 11100001
00000111>>2 00000001 10000111>>2 11100001

无符号右移(>>>)

无符号右移运算是将操作数所有二进制值逐位右移若干位,包括最高位符号位,也跟着右移,低位溢出并舍弃,高位补0。要注意的是,无符号右移(>>>)中的符号位(最高位)也会跟着变。

范例 结果 范例 结果
00000100>>>2 00000001 10000100>>>2 00100001
00000111>>>2 00000001 10000111>>>2 00100001

与(&)

与运算是将参与运算的两个二进制数进行&运算,如果两个二进制位都是1,则与运算的结果为1,其他全部都是0。

范例 结果 范例 结果
0&0 0 0&1 0
1&0 0 1&1 1

或(|)

或运算是将参与运算的两个二进制数进行|运算,如果两个二进制位都是0,则与运算的结果就是0,其他全都是1。即只要其中一个数字的二进制位是1,这个二进制位的运算结果就是1。要注意的是,符号位也是同样的操作。

范例 结果 范例 结果
0|0 0 0|1 1
1|0 1 1|1 1

非(~)

非运算符也叫做取反运算符,只针对一个二进制数进行操作,如果二进制位是0,则取反位1;如果二进制位是1,则取反位0。要注意的是,符号位也是同样的操作。

范例 结果 范例 结果
~0 1 ~1 0
~0000 0001 1111 1110 ~1111 1111 0000 0000

异或(^)

异或运算符是将参与运算的两个二进制数进行异或运算,如果两个二进制位相同,则结果为1,否则为0。

范例 结果 范例 结果
0^0 0 0^1 1
1^0 1 1^1 0

"越有故事的人越沉稳简单,越肤浅单薄的人越浮躁不安。"

java中的7个位运算运算符的更多相关文章

  1. Java中的Bigdecimal类型运算

    Java中的Bigdecimal类型运算 双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.Java在java.math包中提 供的API类BigD ...

  2. java中的、标识符、运算符以及数据类型之间的转换。

    ---恢复内容开始--- 数据类型之间的转换: 1:自动转换:就是不用说出要转换成什么类型,由java中的虚拟机自动将小数据类型转换成大数据类型,但大数据中的数据精度有可能被破坏. 2:强制转换:强制 ...

  3. 关于java中Double类型的运算精度问题

    标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...

  4. 关于java中Double类型的运算精度问题(转)

    Java Java double:浮点数:精确计算  public class Test{    public static void main(String args[]){        Syst ...

  5. java中多个数字运算后值不对(失真)处理方法

    最近遇到一个bug ,在java里面计算两个数字相减,633011.20-31296.30 得到的结果居然是601714.8999999999,丢失精度了,原来这是Java浮点运算的一个bug. 解决 ...

  6. JAVA中自增自减运算符(i++与++i的区别)

    注意: 自增运算符和自减运算符只能用于变量,而不能用于常亮或表达式 运算符 运算 范例 结果 ++ 自增(前):先运算后取值 a=2;b=++a; a=3;b=3; ++ 自增(后):先取值后运算 a ...

  7. Java中的按位运算

    博客大搬家. 一.位运算符简介: 1.按位与&.如果两个整形数据 a.b 对应位都是1,则结果位才为1,否则为0,(int 最大值0x7fffffff ): int a = 0x7ffffff ...

  8. java中的按位与运算

    package scanner; public class SingleAnd { public static void main(String[] args) { int[] first = {10 ...

  9. java中关于'&&'、'||'混合运算优先级问题小结

    package com.per.sdg.operator; /** * 结论:先进行'&&'运算,在进行'||'运算 * @author sundg * */ public class ...

随机推荐

  1. linux应用管理

    desktop文件的几个位置: /usr/share/applications ~/.local/share/applications /usr/local/share/applications li ...

  2. WebService 创建、发布、调用

    环境Win7+VS2017 启用IIS 查看iis是否启用 新建 ASP.NET Web 应用程序 项目,项目中添加Web 服务 在 asmx  文件中添加需要的方法 运行结果 发布 创建新的文件夹, ...

  3. FCC-学习笔记 Spinal Tap Case

    FCC-学习笔记   Spinal Tap Case 1>最近在学习和练习FCC的题目.这个真的比较的好,推荐给大家. 2>中文版的地址:https://www.freecodecamp. ...

  4. JS初始

      简单只和复杂值的区别 1.简单值 简单值表示JS中可用的数据或信息的最底层简单形式. 注:简单之不可被细化. 也就是说,数字是数字,字符是字符,布尔值是true或false,null和undefi ...

  5. web文件上传的总结(一)

    在HTML文件中用表单标签,需要注意input中type为file的name属性值myfile,PHP获取上传文件信息使用name属性值来区分的 1:表单 method="post &quo ...

  6. Linux 用libevent实现的简单http服务器

    Linux 用libevent实现的简单http服务器 main.c #include <stdio.h> #include <sys/types.h> #include &l ...

  7. windows经典主题 桌面颜色(R58 G110 U165)

  8. 如何下载windows版的kubectl.exe文件

    github上的下载链接,不能直接下载. https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#client-b ...

  9. vue-router有哪几种导航钩子 keep-alive的详细用法 解决跨域

                1===>vue-router有哪几种导航钩子?        第一种:是全局导航钩子:router.beforeEach(to,from,next)        第二 ...

  10. 201871010128-杨丽霞《面向对象程序设计(Java)》第十二周学习总结

    201871010128-杨丽霞<面向对象程序设计(Java)>第十一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...