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

如何区分逻辑运算符和位运算符

逻辑运算符:左右连接的是布尔类型的操作数
位运算符:左右连接的是具体的数值

<< 左移

3 << 2 = 12
十进制数值3的二进制是 00000000 00000000 00000000 00000011
左移两位是 000000 00000000 00000000 00001100
image.png
面试题
4 乘以 8最快的方式是 4 << 3

>> 有符号右移

6 >> 2 = 1
image.png
-6 >> 2 = -2
image.png

>>> 无符号右移

6 >>> 2 = 1
image.png

&与

6 & 3 = 2
image.png

|或

6 | 3 = 7
image.png

^异或

6 ^ 3 = 5
image.png

~反

~6 = -7
image.png

byte类型的表数范围的 -128是怎么算出来的

127: 01111111
-128: 10000000
一看就是个负数
减1: 01111111
取反: 10000000 —-》1*2^7 = 128
加负号: -128