300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java 位运算符详解

Java 位运算符详解

时间:2019-12-25 16:10:55

相关推荐

Java 位运算符详解

文章目录

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

Java 位运算符详解

前情提要:

因为位运算符是按照二进制位操作整数的, 涉及到 二进制 和 整数存储方式(原码、反码、补码)

不懂的话可以参考 计算机底层如何存储不同的数据

一、简介

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

位运算符的运算过程都是基于补码运算,但是看结果,我们得换成原码,再换成十进制看结果从二进制到十进制都是基于原码byte、short、char 在使用 位运算时 按照 int 类型处理位运算直接对二进制进行位移操作实现数值运算,所以运算效率高

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

如果操作数是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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。