Java 位运算符详解
文章目录
- 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
右移 >>
运算规则:实际操作的是位,可以理解为除以
2
的n
次幂,如果不能整除,向下取整
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 位运算符详解相关推荐
- java位运算符详解
java位运算符详讲 一.位运算符分类 java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^. 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示. ...
- Java位运算符详解(移位、位与、或|、非~、异或^)
位运算符 位运算是对操作数以二进制为单位进行的操作和运算,运算结果为整数.位运算符包括:"&"."|"."~"."^&qu ...
- 位运算符Java与详解_java位运算符详解
java位运算符详讲 一.位运算符分类 java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^. 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示.二. ...
- 一篇搞定位运算——java位运算详解
java位运算详解 前言 一.位运算符 &:按位与 |:按位或 ~:按位非 ^:按位异或 <<:左位移运算符 >>:右位移运算符 <<<:无符号右移运 ...
- java 异或 排序_Java的位运算符详解实例——与()、非(~)、或(|)、异或(^)...
位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...
- Java千问:Java语言位运算符详解
很多编程语言都有位运算符,Java语言也不例外.在Java语言中,提供了7种位运算符,分别是按位与(&).按位或(|).按位异或(^).取反(~).左移(<<).带符号右移(> ...
- Java移位运算符详解实例——左移位运算符、带符号的右移位运算符
移位运算符也针对二进制的"位",它主要包括:左移位运算符(<<).右移位运算符(>>>).带符号的右移位运算符(>>). 1.左移运算符 ...
- Java的位运算符详解——与()、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两 ...
- 位运算符详解(与,或,非,异或)
位运算符主要是以二进制规则进行运算 1.与(&)运算符 使用规则:两个二进制操作数对应位同为1 结果位 才为1,其余情况为0: 例如:整数 a = 15 整数 b = 127 计算:(a ...
最新文章
- dotnet core高吞吐Http api服务组件FastHttpApi
- Linux 下判断Server 内存是否不足
- 【采用】【科技金融】互金风控大数据盘点
- KMP 算法并非字符串查找的优化 [转]
- ExtJs FormPanel布局
- 电脑pin重置_如果忘记了如何重置Windows PIN
- Android之在Activity中动态得到Adapter类中数据
- 从Java 11中删除的API
- Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示
- [转]把人当成一个公司来经营,心就不会那么累
- 单片机并口应用实验c语言,1单片机并口简单应用(流水灯).docx
- 如何开发与设计一个爆款小游戏
- ROS 图像相关的命令与应用
- Linux环境安装配置JDK
- CDC不同模式在ODI体现系列之二 异步模式
- 【论坛项目】简单的论坛小项目-麻雀虽小,五脏俱全
- android gsm功能,Android手机-GSM网络与WCDMA网络选择的设置
- python 课后作业_python 学习笔记 三 课后作业
- C++ sqlite3解决中文排序问题
- idea easyYapi插件导入yapi接口使用及踩坑记录
热门文章
- 渗透测试-BurpSuite爆破(Intruder)模块四种模式介绍
- BurpSuite Intruder模块四种攻击模式
- 虚拟化服务器制作视频教程,VMware服务器虚拟化视频教程套餐【32课高清完整版】...
- 计算机电源反复启动,电脑开机电源反复亮灭(主机开机无限断电重启)
- 安装vimplus之后乱码问题解决
- vue 获取系统时间
- 【JZOJ 省选模拟】6655.三国学者
- 使用2.4寸OLED显示器遇到的小问题
- 送你一朵小红花,CSS实现一朵旋转的小红花
- gprof 使用和介绍