在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、>>、<<、>>>几个位操作符。不管是初始值是依照何种进制,都会换算成二进制进行位

操作。接下来对这几种操作符进行一下简单的解说。

&:

作用是对运算符两側以二进制表达的操作符按位分别进行'与'运算。而这一运算是以数中同样的位(bit)为单位的。操作的规则是:仅当两个操作数都为1时。输出结果才为1。否

则为0,示比例如以下:

12 的二进制为 1100

5   的二进制为 0101

则 12 & 5 的二进制为 0100,则完整的运算式为 12 & 5 = 4;

|:

作用是对运算符两側以二进制表达的操作符按位分别进行'或'运算。而这一运算是以数中同样的位(bit)为单位的。

操作的规则是:仅当两个操作数都为0时,输出的结果才为0。

否则为1,示比例如以下:

12 的二进制为 1100

5   的二进制为 0101

则 12 | 5 的二进制为 1101。则完整的运算式为 12 & 5 = 13;

^

作用是对运算符两側以二进制表达的操作数按位分别进行'异或'运算,而这一运算是以数中同样的位(bit)为单位的。

异或运算操作的规则是:仅当两个操作数不同一时候。对应的

输出结果才为1,否则为0,示比例如以下:

12 的二进制为 1100

5   的二进制为 0101

则 12 | 5 的二进制为 1001。则完整的运算式为 12 & 5 = 9;

~

'取反'运算符~的作用是将各位数字取反:全部的0置为1,1置为0,示比例如以下:

12 的二进制为 1100

进行取反操作为 10000000 00000000 00000000 00001101

则完整的运算式为 ~12 = -13

<<

左移就是把一个数的全部位数都向左移动若干位,示比例如以下:

12 的二进制为 1100

则 12 << 1 的二进制为 11000, 则完整的运算式为 12 << 1 = 24;

>>

右移就是把一个数的全部位数都向右移动若干位,示比例如以下:

12 的二进制为 1100

则 12 >> 1 的二进制为 0110。 则完整的运算式为 12 >> 1 = 6;

>>>

无符号右移一位。不足的补0。 示比例如以下:

12 的二进制为 1100

则 12 >> >1 的二进制为 0110, 则完整的运算式为 12 >> 1 = 6;

题外话:位运算是一种基于二进制的运算,涉及到知识包含原码、反码、补码,在此做一个小小的说明,

对于原码。就是当前数字的二进制表现形式,如-1的原码是1000 0001。

对于反码,正数的反码就是本身。负数的反码是二进制保留符号位。剩余位取反,比如-1的反码是1111 1110;

对于补码,正数的反码、补码、原码都是一样的,负数的补码是在其反码的基础上+1,比如-1的补码是1111 1111。

在JDK的原码中。有很多初始值都是通过位运算计算的,位运算有很多特性,能够在线性增长的数据中起到作用。且对于一些运算,位运算是最直接、最简便的方法。

转载于:https://www.cnblogs.com/gavanwanggw/p/7015620.html

Java 位运算符 深入理解相关推荐

  1. Java 位运算符详解

    文章目录 Java 位运算符详解 前情提要: 一.简介 二.如何区分 &,|,^ 是逻辑运算符还是位运算符? 三.例子 按位与 & 按位或 | 按位异或 ^ 按位取反 ~ 左移 < ...

  2. java位运算符和位运算表达式

    java位运算符和位运算表达式 > 右移 x>>a X各比特位右移a位 << 左移 X< >> 不带符号的右移 x>>>a X各比特位 ...

  3. java位运算符详解

    java位运算符详讲 一.位运算符分类     java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^.  在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示. ...

  4. java位运算符取反_java运算符

    Java 语言支持如下运算符: 算术运算符: +,-,*,/,%,++,-- 赋值运算符 = 关系运算符: >,<,>=,<=,==,!=, instanceof 逻辑运算符: ...

  5. java 位运算符在实际开发中的用处_java 位运算 和实际应用

    public class Test { public static void main(String[] args) { // 1.左移( < // 0000 0000 0000 0000 00 ...

  6. Java位运算符详解(移位、位与、或|、非~、异或^)

    位运算符 位运算是对操作数以二进制为单位进行的操作和运算,运算结果为整数.位运算符包括:"&"."|"."~"."^&qu ...

  7. java位运算符取反_Java运算符之位运算符

    位运算符 尹成课程资料及演示(免费)(文末有资料链接) 位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的.接下来通过一张表来展示Java中的位运算符及其用法,如表1所示. ...

  8. Java 位运算符的基本用法【1】

    1.位运算符有哪些:&,|,^,~,>>,>>>,<< 2.&,|,^,~的用法: &(与运算符):有0则0 |(或运算符):有1则1 ...

  9. Java 位运算符和移位运算符

    参考: Bitwise and Bit Shift Operators <Java 编程思想 第3章 操作符> 今天学习 Java BitSet 类时,发现对于位运算符和移位运算符的操作有 ...

最新文章

  1. VirtualBox6.0中CentOS7.6 网络配置
  2. 兵器工业计算机应用研究所刘培志,一种双目视觉立体匹配算法_2
  3. python程序设计报告-Python程序设计实验一报告
  4. 数组字符串转化成数组与eval函数
  5. 外媒:下代iPad Pro将同时具备无线充电和反向无线充电功能
  6. 在VS上部署OpenGL
  7. 复习webpack4之PWA打包配置
  8. 企业安全:业务的安全韧性
  9. 根据银行卡号判断银行卡是否正确与归属银行
  10. nodejs下载安装和环境搭建,以及nodejs各个版本如何绿色下载
  11. checkio Ascending List
  12. win下使用curl
  13. 电信IHO-3000机顶盒高安版 悦ME刷机固件
  14. nginx 499错误原因及解决
  15. 内核热补丁,真的安全么?| 龙蜥技术
  16. 8255A红绿灯c语言程序,微机原理十字路口红绿灯闪烁实验
  17. php7 kernel32,usleep()
  18. Eclipse的“order and export”是干什么用的?
  19. 32位与64位操作系统以及CPU的关系
  20. C#调用百度人体分析SDK进行人流量分析,计算图片的人数

热门文章

  1. python 遍历内嵌tuple_python内置数据结构list、set、dict、tuple(一)
  2. Mac/IOS Xcode Instruments资源统计及自动化相关
  3. Java21天打卡Day5-ifelse
  4. 自动化测试框架-pytest框架入门篇
  5. python解析接口_010 python接口 bs4解析html
  6. 华为nova2s云相册在哪里_华为反人类的用户体验
  7. matlab左除怎么输入法,python 实现matlab左除
  8. idea maven 删除dependencies_使用IDEA创建Maven工程 创建javase工程
  9. 基于迁移学习的辣椒病虫害搜索模型(裁剪病害区)
  10. PYTORCH 定义模型