写的有点多,不过看完之后,你一定会完全明白。
毕老师的视频中对于& | ^ 讲的比较简单,便于应用。要是详细分类的话,我特意翻阅了几本清华大学出版社的java编程书,是这样的,你不能单独说& | ^ 是逻辑运算符还是位运算符,要看运用的环境,&既可以是你说的位运算符之按位与运算,也可以是逻辑运算符。
逻辑运算符:
用于执行布尔值的逻辑运算,也就是用逻辑运算符连接的表达式1和表达式2各自的结果要么为真要么为假,根据两个表达式各自的真假和&最终确定最后结果为真还是假 即 表达式1 & 表达式2 如3>5 & 3<7 为false & true 结果为false,在这里&就是个逻辑运算符。
位运算符:
这里的位指的是二进制的一个位;
位运算符包括:基本位运算符(& | ^ ~ 等等)和移动位运算符(>> >>> << <<<等等)
基本运算符中& | ^ ~ 也统称位逻辑运算符,也就是说是对二进制位进行运算,同时运算也包含了逻辑运算
举例:50 & 15 (看见没这里的&前后不是表达式1和表达式2了 变成了两个整数)
在计算机中都是以二进制的形式表现得 就变成了 00110010
& 00001111
= 00000010
可以看出都是对50,15的对应的二进制位分别进行运算,在运算中又用到了与逻辑运算,因此叫做位逻辑运算符,具体到&来说就是按位与运算符,同理| 叫做按位或运算。
移位运算符:顾名思义,通过对整数的二进制位进行左右移动进行运算。这个就不用我说啦 |