2018.11.22正攻java第三天

今天学的运算符,其实挺好理解的。

逻辑运算符:

& 与 并且,两者都为true才能为true。
| 或,两者中只要有一个true就为true。
^ 异或,两边不同为true,相同为false。
&& 短路与,从第一个开始只要找到一个false后面直接短路(跳过,不运行。)
|| 短路或,从第一个开始只要找到一个true后面直接短路(跳过,不运行。)

位运算符(一):

& 按位与(有0则0):
int x = 3,y = 4; int a = 3 & 4;
3 = 011
4 = 100
& = 000
| 按位或(有1则1):
int b = 4 | 5 ;
b = 100
5 = 101
| = 101
^ 按异位或(相同则0,不同则1)
int c = 4^ 5 int c = 4^ 5^5 (一个数被同一个数异或2次,值不变)
4=100 4=100
5=101 5=101
^=001 ^=001
5=101
^=100
~按位取反(高位也会被取反,需要补码进行运算)
int d = ~6;
6=0…0110 补码(正数的原 反 补相同)
1…1001 补码(取反)
1…1000 反码(减1)
1…0111 原码(取反)

位运算(二):

<< 左移
向左移几位,就是乘以2的几次幂,
最高为是0,右边补齐0.最高为是1,右边补齐1。
int e=8<<2;
8=0…01000
=0…100000
>>右移
向右移几位,就是除以2的几次幂,
最高位是0,左边补齐0.最高为是1,左边补齐1.
int g=11>>2;
11=0…01011
=0…0010
>>> 无符号右移(无论最高为是0还是1.左补齐0)

猜你喜欢

转载自blog.csdn.net/weixin_42495791/article/details/84344412