位运算就是基于整数的
二进制来表示的运算 ,它直接处理每一个比特位 ,
基本的位运算共 7 种,分别为 :
- 与(AND) &
- 或(OR) |
- 异或(XOR) ^
- 非(NOT) ~
- 有符号左移<<
- 有符号右移>>
- 无符号号右移>>>
按位与(AND)& :
运算符(位与)用于对两个二进制操作数逐位进行比较。如果对应的位都为 1,那么结果就是 1, 如果任意一个位是 0 则结果就是 0。
如 00001 & 00011 的结果是 00001
常用来判断奇偶数!!!
按位或(OR) |
|运算符(位或)用于对两个二进制操作数逐位进行比较。只要两个对应位中有一个 1 时就为 1,否则为 0。
如 00001 | 00011 的结果是 00011
按位异或(XOR) ^
用于对两个二进制操作数逐位进行比较。只有两个对应位不同时才为 1。
如 00001 ^ 00011 的结果是 00010
按位非(NOT) ~
运算符(位非)用于对两个二进制操作数逐位进行比较。对位求反,1 变 0, 0 变 1。
注意 : 一个数与自身的取反值相加等于-1
有符号左移<< 有符号右移>>
左右移符号后面跟上要移动的位数 ,注意不管左移还是右移 ,符号位都会改变 ,此时符号位要跟之前保持一致 !
无符号右移>>>
零-填充,这个就更明显了,右移后空位不管你符号位是什么,我都只填 0。
注意 : 右移一位相当于这个数除以2 。如果是奇数 ,是除以2后向下取整。