首页 > 其他 > 详细

简谈位运算

时间:2020-08-02 22:02:04      阅读:107      评论:0      收藏:0      [点我收藏+]

我们在平时抄题解做题时,常常会看到“<<”、“>>”之类的符号,这些看上去狂甩酷拽吊炸天的符号就是位运算。

这里我简单说一下位运算符号。


一、  &

对于这个符号,大家更常见的双&。单&意为按位或,把参与运算的两个数对应的二进制位相与,只有对应的两位都为“1”时,结果的对应为才为1,否则为0。

如,9的二进制位00001001,7的二进制位00000111,两个数只有最后一位都是1,故9&5的运算结果为00000001,输出1。

二、|

与&类似,双|表示或,单|表示按位或。将参与运算的两数对应的二进制位相或,只要对应为有一个是“1”,结果的对应为就为1。

如,9的二进制位00001001,7的二进制位00000111,两数相或得到的就是00001111,输出结果为15。

三、^

^是按位异或,把参与运算的两个数对应的二进制位相异或,若对应位的数字不同,即一个为0、另一个为1时,结果的对应位为1,若相同则为0。

如,9的二进制位00001001,7的二进制位00000111,两数按位异或的运算结果为00001110,输出结果为14。

四、~

这是取反,把运算数的各个二进制为按位求反,即0变1,1变0。

如,9的二进制位00001001,求反后是11110110。需要注意的是,用于计算的数字要放在~后边,9取反要写~9。


 

以上四种位运算在实际做题中遇见的较少,至少我遇到的比较少。

这并不代表它们不重要,在某些情况下使用以上4中位运算会更加便利。

题目中比较常见的位运算是左移和右移。

一、左移

左移符号是“<<”,即两个小于号,使用格式为a<<b,它的意思是将a的二进制的每一位都向左移动b位,如,1 << 2,即将1 每一位都向左移动2位,于是,00000001就变成了00000100,从1变成了4。

左移n位,原数就变成 原数 * 2^n。

二、右移

右移符号是“>>”,使用格式同左移,为a>>b,表示a的每一位都向右移动b位,4>>2即将4的每一位都向右移动2位,从00000100变为00000001。

右移n位,原数就变成 原数 / 2^n。


左移和右移在一般的计算中要快一点,能起一定的优化作用。

 

简谈位运算

原文:https://www.cnblogs.com/Na2S2O3/p/13423053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!