美文网首页
简单聊聊 JAVA位运算符

简单聊聊 JAVA位运算符

作者: Jevely | 来源:发表于2019-08-01 07:43 被阅读0次

哈喽,本来打算讲一讲HashMap的原理的,但是发现在HashMap中用到了一些位运算符,所以打算先来讲讲Java的位运算符,这样在讲HashMap的时候更容易理解。

Java位运算符分为 &|^~>><<,位运算符是对2进制进行位运算,在2进制中1表示true,0表示false。

下面我们依次来讲解下:

&(与运算符)

与运算符表示的是都为true的时候才是true,否则为false。
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
栗子:
3 & 6
我们先得到3和6的2进制,分别为
00000011
00000110
在与运算过后得到的是
00000010
所以最后结果转换为10进制为2。

|(或运算符)

或运算符表示的是如果有一个为true,那么就为true,否则为false。
1 & 0 = 1
1 & 1 = 1
0 & 0 = 0
栗子:
5 | 7
我们先得到5和7的二进制,分别为
00000101
00000111
在或运算过后为
00000111
所以最后转换为10进制为7。

^(异或运算符)

异或运算符表示的是如果相同,则为false,否则为true。
1 & 0 = 1
1 & 1 = 0
0 & 0 = 0
栗子:
4 ^ 9
我们先得到4和9的二进制,分别为
00000100
00001001
在异或运算过后为
00001101
转换为10进制为13。

~(取反运算符)

取反表示为true为false,false为true。
~ 1 = 0
~ 0 = 1

在讲栗子之前先说一下2进制的最高位是用来表示正负的,如果最高位为0,则为正数,如果为1,则为负数。比如-6,转换为2进制就是6的2进制取反然后+1。
6的2进制为(因为Int是32位,所以我们用32位表示更加清楚)
00000000 00000000 00000000 00000110
那么取反过后为
11111111 11111111 11111111 11111001
因为是-6,所以我们在6取反过后还要+1,那么-6的2进制为
11111111 11111111 11111111 11111010

在讲完正负如何转换2进制过后我们来举一个取反的栗子
~6
我们先拿到6的2进制为
00000000 00000000 00000000 00000110
取反过后为
11111111 11111111 11111111 11111001
然后转换为10进制,因为最高位为1,所以为负数,负数转换为10进制我们要先-1,再取反,最后得到的数前面加一个负号就好。
所以我们最后得到的是 -7。

>>(右移运算符)

右移就是将2进制向右移动。
栗子:
5 >> 2
就是将5的2进制向右移动2位。
5的2进制为
00000101
右移过后为
00000001
那么最后结果转为10进制为1。
这里需要注意的是在移动过后必然需要补位,补位的时候如果左边为0,那么久补0,如果为1,那么就补1。

<<(左移运算符)

左移运算符和右移运算符原理一样,只不过是向左移动。这里我们还是用5来举栗子。
5 << 2
5的2进制为
00000101
左移两位过后为
00010100
转换为10进制为20


上文中如果有错误欢迎大家指出。

3Q

相关文章

  • 简单聊聊 JAVA位运算符

    哈喽,本来打算讲一讲HashMap的原理的,但是发现在HashMap中用到了一些位运算符,所以打算先来讲讲Java...

  • python基础(四)----运算符

    一.算术运算符(基本同Java) 二.比较运算符(基本同Java) 三.赋值运算符(基本同Java) 四.位运算符...

  • java基础知识

    title: java基础知识tags: [java基础知识] 位运算符 java种的运算符有 “&”,“|”,“...

  • Java &、&&、|、||、^、<

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • Java各种&、&&、|、||、^、<<、>>、~、>>>等运算

    Java运算符大致分为逻辑运算符(&&,||,!)、算数运算符(+, -, *, / ,+=)、位运算符(^,|,...

  • 算法整理(1) 位运算相关

    运算符 位运算符用来对二进制位进行操作,Java中提供了如下的位运算符:位运算符中,除 ~ 以外,其余均为二元运算...

  • Kotlin 运算符、符号重载总结

    算数运算符 关系运算符 示例 逻辑运算符 位运算符 三目运算 Java Kotlin forEach、in 循环 ...

  • Java 位运算符

    https://java-er.com/blog/java-shit-operation/ Java位运算符(bi...

  • Java运算符

    Java的运算符,分为四类: 算数运算符、关系运算符、逻辑运算符、位运算符。 算数运算符(9):+ - * / %...

  • Java的运算符

    Java的运算符,分为四类: 算数运算符、关系运算符、逻辑运算符、位运算符。 算数运算符(9):+ - * / %...

网友评论

      本文标题:简单聊聊 JAVA位运算符

      本文链接:https://www.haomeiwen.com/subject/ebxfdctx.html