文章目录

  • Java 位运算符详解
    • 前情提要:
    • 一、简介
    • 二、如何区分 &,|,^ 是逻辑运算符还是位运算符?
    • 三、例子
      • 按位与 &
      • 按位或 |
      • 按位异或 ^
      • 按位取反 ~
      • 左移 <<
      • 右移 >>
      • 无符号右移 >>>

Java 位运算符详解

前情提要:

因为 位运算符 是按照二进制位操作 整数 的, 涉及到 二进制 和 整数存储方式(原码、反码、补码)
不懂的话可以参考 计算机底层如何存储不同的数据

一、简介

位运算符: 是按照 二进制位 进行运算的运算符, 左右两边都是整数。

  • 位运算符的运算过程都是基于 补码运算,但是看结果,我们得换成原码,再换成十进制看结果
  • 从二进制到十进制都是基于原码
  • byte、short、char 在使用 位运算时 按照 int 类型处理
  • 位运算直接对二进制进行位移操作实现数值运算,所以运算效率高
位运算符 符号解释
& 按位与,当两位相同时为 1 时 返回 1
\| 按位或,只要有一位为 1 即可返回 1
^ 按位异或,当两位相同时返回 0,不同时返回 1
~ 按位非,将操作数的每个位(包括符号位)全部取反
<< 左移运算符
>> 右移运算符
>>> 无符号右移运算符

二、如何区分 &,|,^ 是逻辑运算符还是位运算符?

如果操作数是boolean类型,就是逻辑运算符,如果操作数是整数,那么就位运算符。

三、例子

按位与 &

运算规则:对应位都是 1 才为 1

正数运算

 9 & 7  // 结果 1

负数运算

 -9 & 7 // 结果 7

按位或 |

运算规则:对应位只要有 1 即为 1

正数运算

 9 | 7  // 等于 15

负数运算

 -9 | 7 // 结果 -9

按位异或 ^

运算规则:当两位相同时返回 0,不同时返回 1

正数运算

 9 ^ 7  // 结果 14


负数运算

 -9 ^ 7 // 结果 -16

按位取反 ~

运算规则: 将操作数的每个位(包括符号位)全部取反

正数运算

 ~9  // 结果 -10


负数运算

 ~-9  // 结果 8

左移 <<

运算规则:实际操作的是位,可以理解为左移几位就相当于乘以 2 的几次方

 3 << 4  // 类似于  3 * 2的4次 = 3*16 = 48

 -3 << 4 // 类似于  -3 * 2的4次 = -3*16 = -48

右移 >>

运算规则:实际操作的是位,可以理解为除以 2n 次幂,如果不能整除,向下取整

 69 >> 4 // 类似于 69 / 2的4次 = 69/16 = 4

 -69 >> 4 // 类似于  -69 / 2的4次 = -69/16 = -5

无符号右移 >>>

运算规则:实际操作的是位,不看符号位
正数:和右移一样
负数:右边移出去几位,左边补几个0,结果变为正数

 69 >>> 4  // 类似于  69 / 2的4次 = 69/16 = 4

 -69 >>> 4   // 结果 268435451

Java 位运算符详解相关推荐

  1. java位运算符详解

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

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

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

  3. 位运算符Java与详解_java位运算符详解

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

  4. 一篇搞定位运算——java位运算详解

    java位运算详解 前言 一.位运算符 &:按位与 |:按位或 ~:按位非 ^:按位异或 <<:左位移运算符 >>:右位移运算符 <<<:无符号右移运 ...

  5. java 异或 排序_Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)...

    位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...

  6. Java千问:Java语言位运算符详解

    很多编程语言都有位运算符,Java语言也不例外.在Java语言中,提供了7种位运算符,分别是按位与(&).按位或(|).按位异或(^).取反(~).左移(<<).带符号右移(> ...

  7. Java移位运算符详解实例——左移位运算符、带符号的右移位运算符

    移位运算符也针对二进制的"位",它主要包括:左移位运算符(<<).右移位运算符(>>>).带符号的右移位运算符(>>). 1.左移运算符 ...

  8. Java的位运算符详解——与()、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...

  9. 位运算符详解(与,或,非,异或)

    位运算符主要是以二进制规则进行运算 1.与(&)运算符 使用规则:两个二进制操作数对应位同为1 结果位 才为1,其余情况为0: 例如:整数 a = 15   整数 b = 127 计算:(a ...

最新文章

  1. dotnet core高吞吐Http api服务组件FastHttpApi
  2. Linux 下判断Server 内存是否不足
  3. 【采用】【科技金融】互金风控大数据盘点
  4. KMP 算法并非字符串查找的优化 [转]
  5. ExtJs FormPanel布局
  6. 电脑pin重置_如果忘记了如何重置Windows PIN
  7. Android之在Activity中动态得到Adapter类中数据
  8. 从Java 11中删除的API
  9. Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示
  10. [转]把人当成一个公司来经营,心就不会那么累
  11. 单片机并口应用实验c语言,1单片机并口简单应用(流水灯).docx
  12. 如何开发与设计一个爆款小游戏
  13. ROS 图像相关的命令与应用
  14. Linux环境安装配置JDK
  15. CDC不同模式在ODI体现系列之二 异步模式
  16. 【论坛项目】简单的论坛小项目-麻雀虽小,五脏俱全
  17. android gsm功能,Android手机-GSM网络与WCDMA网络选择的设置
  18. python 课后作业_python 学习笔记 三 课后作业
  19. C++ sqlite3解决中文排序问题
  20. idea easyYapi插件导入yapi接口使用及踩坑记录

热门文章

  1. 渗透测试-BurpSuite爆破(Intruder)模块四种模式介绍
  2. BurpSuite Intruder模块四种攻击模式
  3. 虚拟化服务器制作视频教程,VMware服务器虚拟化视频教程套餐【32课高清完整版】...
  4. 计算机电源反复启动,电脑开机电源反复亮灭(主机开机无限断电重启)
  5. 安装vimplus之后乱码问题解决
  6. vue 获取系统时间
  7. 【JZOJ 省选模拟】6655.三国学者
  8. 使用2.4寸OLED显示器遇到的小问题
  9. 送你一朵小红花,CSS实现一朵旋转的小红花
  10. gprof 使用和介绍