最近经常碰到位运算,现对常见的位运算总结如下:
1、位移运算符
>>:称为按位右移运算符,将左边数的二进制按位向右移指定的位数。
<<:称为按位左移运算符,将左边数的二进制按位向左移指定的位数。
位移运算符作用于其左侧的变量,其右侧的表达式的值是移动的位数,运算结果是移动后的变量结果。
例如:
b=a<<2,a的值左移两位并赋值给b,而a本身的值不改变。
向左移位在低位上补0,向右移位在高位上补0。右移时可以保持结果的符号位,也就是右移时,如果最高位为1,是符号位,则补1而不是补0。
右移运算符常常用来实现整数除法运算,左移运算符用来实现整数乘法运算。其中用来实现乘法和除法的因子必须是2的幂次。
2、位逻辑运算符
&:称为按位与运算符,两个位都为1时,结果为1,否则为0。
|:称为按位或运算符,只要其中有一个为1,则结果为1,否则为0。
^:按位异或运算符,两个位不相同时,结果为1,否则为0。
~:按位补运算符,这是一个单目运算符,当为1时结果为0,当为0时结果为1。
以上属于按位逻辑运算符,只能用于整型表达式。通常用于对整型变量进行位的设置、清零、取反、以及对某些选定的位进行检测。
例如:
设置第4位为1,而其他位保持不变,可以使用按位逻辑或运算
a = a | 0x08,
a与00001000做或运算之后,a的第4位被设置为1,而其他位不变
要设置其他位为1,做法类似.改变或值即可.
又如:
设置第4位为0,而其他位保持不变,可以使用按位逻辑与运算
a = a & 0xF7,
a与11110111做与运算之后,a的第4位被设置为0,而其他位不变
要设置其他位为0,做法类似.改变与值即可.
新闻热点
疑难解答
图片精选