Java运算符及二进制运算符

Java运算符

  • 算术运算符:+,-,*,/,%,++,——

  • 赋值运算符:=

  • 关系运算符:>,<,>=,<=,==,!= instanceof

  • 逻辑运算符:&&,||,!

  • 位运算符:&,|,^,~,>>,<<

  • 条件运算符 ?:

  • 扩展赋值运算符:+=,-=,/=,/=

++ --

  • a++ 先参与运算 在加一

  • ++a 先加一在参与运算 输出语句也算运算

&& || !

  1. 与 && 两个都是真才是真 一个是假就是假

    • 短路运算 懒惰运算 第一个条件能决定最终结果,第二个条件不回去执行。

    • 第一个条件为假后:第二个条件是真是假都不影响最终结果,所有第二条件不去执行

  2. 或 | | 两个都是假才是假 一个是真就是真

    • 非懒惰运算 长路运算 不管第一个条件是否能决定最终结果,第二个条件都要去执行

  3. 非 ! 如果是真变假 如果是假变真

    一般在多个条件相连的时候使用

二进制的运算符

1. 位与运算符 &

运算规则:11为1

1 Byte a=42 3 Byte b=64 
5 Byte res=a&b;

运算过程:

4的二进制: 0000 0100

6的二进制: 0000 0110

11为1: 0000 0100

结果是:4

2. 位或运算符 |

运算规则:1为1

1 Byte a=42 3 Byte b=64 5 Byte res=a|b;

运算过程:

4的二进制: 0000 0100

6的二进制: 0000 0110

有1为1: 0000 0110

结果是:6

3. 异或运算符 ^

运算规则:相同为0 不同为1

1 Byte a=42 3 Byte b=64 5 Byte res=a^b;

运算过程:

4的二进制: 0000 0100

6的二进制: 0000 0110

: 0000 0010

结果是:2

 

4. 位非运算符 ~

是一个一元运算符

运算规则:按位取反

1 Byte a=42 3 Byte b=~a;

运算过程:

4的二进制: 0000 0100

按位取反: 1111 1011

结果是:-5

5.移位
5.1 右移 >> :每移动一位相当于除二

正数:二进制数字向右移动,左边空出的位置补0

1 byte num=5
2 byte r1=num>>2
3 byte num1=48
4 byte r2=num1>>3

5的二进制:0000 0101

移动后: 0000 0001 01

结果为:1

48的二进制: 0011 0000

移动后: 0000 0110 000

结果为:6

负数:向右移,空位补1 (只有负数右移空位补1)

1 byte num=-5;
2 byte r1=(byte)(num>>2);

-5的二进制:1111 1011

移动后: 1111 1110 11

结果为:-2

2.6.5.2左移 <<:每移动一位相当与乘2
1 byte num=-5;
2 byte r1=(byte)(num<<2);

-5的二进制:1111 1011

移动后 : 11 1110 1100

结果为:-20

Byte

Byte在内存里面能占八个字节

二进制最高位是1表示负数换算到十进制想知道负多少的规则:取反+1

例如:                                 00101101 à 45

-45 45=32+8+4+1=101101 11010011 à -45

 

posted @ 2020-05-29 12:24  不被替代的坚持  阅读(135)  评论(0)    收藏  举报