7.15位运算 01基础

144 阅读1分钟

位运算就是基于整数的二进制来表示的运算 ,它直接处理每一个比特位 ,

基本的位运算共 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后向下取整。