位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作
<font size=3>运算符大致有:</font>
按位与 and 运算符 &
相同位的两个数字都为1,则为1;若有一个不为1,则为0。
00101
11100
(&;或者and)
00100
按位或 or 运算符 |
相同位只要一个为1即为1。
00101
11100
(|或者or)
11101
按位异或 xor 异或运算符 ^
异或的符号是^。
按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作.
操作的结果是如果某位不同则该位为1, 否则该位为0.
异或运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变
即(a xor b) xor b = a。xor运算可以用于简单的加密。
00101
11100
(^或者xor)
11001
按位取反 not 反运算符 ~
not运算的定义是把内存中的0和1全部取反。
使用not运算时要格外小心,你需要注意整数类型有没有符号。
00101
(~反运算 not)
11010
按位左移 shl 运算符 <<
a shl b就表示把a转为二进制后左移b位(在后面添b个0)
例如100的二进制为1100100,而110010000转成十进制是400
1100100 << 2 = 110010000
。
可以看出,a shl b的值实际上就是a乘以2的b次方
按位右移 shr 运算符 >>
将操作数的所有位向又移动指定的位数。
和 shl 相似,a shr b表示二进制右移b位(去掉末b位)
相当于a除以2的b次方(取整)
更多文章可前往做棵大树查看