首页 > 编程 > C++ > 正文

C、C++按位运算总结

2019-11-06 06:14:08
字体:
来源:转载
供稿:网友

最近经常碰到位运算,现对常见的位运算总结如下:

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,做法类似.改变与值即可.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选