&(按位与)
定义:针对二进制,只要有一个为0,就为0。2 & 5 = 02的二进制:00000000 00000000 00000000 000000105的二进制:00000000 00000000 00000000 00000101
|(按位或)
定义:针对二进制,只要有一个为1,就为1。2 | 5 = 72的二进制:00000000 00000000 00000000 000000105的二进制:00000000 00000000 00000000 00000101
^(按位亦或)
定义:针对二进制,相同的为0,不同的为1。2 ^ 5 = 72的二进制:00000000 00000000 00000000 000000105的二进制:00000000 00000000 00000000 000001012 ^ 3 = 12的二进制:00000000 00000000 00000000 000000103的二进制:00000000 00000000 00000000 00000011
~(按位非)
定义:按位取反运算符翻转操作数的每一位,即0变成1,1变成0。~8 = -98的二进制:00000000 00000000 00000000 00000100~8的二进制:11111111 11111111 11111111 11110111因为高位是1,所以该数为负数。<font color ="#CC0000">负数的补码是其绝对值的原码取反,末尾再加1。</font>末尾减1得反码:11111111 11111111 11111111 11110110将反码取反:00000000 00000000 00000000 00001001 = 9
<<(向左位移)
定义:针对二进制,转换成二进制后向左移动3位,后面用0补齐。3 << 1 = 63的二进制:00000000 00000000 00000000 000000113左移后进制数:00000000 00000000 00000000 00000110
>>(向右位移)
定义:针对二进制,转换成二进制后向右移动3位。3 >> 1 = 13的二进制:00000000 00000000 00000000 000000113右移后进制数:00000000 00000000 00000000 00000001
>>>(无符号右移)
定义:忽略符号位,空位都以0补齐。-1 >>> 1 = 2147483647-1的二进制(补码表示法):11111111 11111111 11111111 11111111右移后:01111111 11111111 11111111 11111111