移位运算符

'>>' 和 '<<' 都是位运算符的一种,都是直接对二进制位操作的运算符。'>>' 和 '<<' 的具体作用就是对二进制位进行移动操作,一般只能对整型变量进行操作。

1、'>>'  —— 右移

将二进制数整体向右移动。由于一个变量的位数是一定的,对于移出范围的位要舍弃,移入范围的位要补上0。

如下图,我们默认在8位下进行运算:

移位运算符_第1张图片

不难发现,每向右移动一位,相当于在原数的基础上除以2(与 int型 /2 舍弃小数部分相符)。 

2、 '<<' —— 左移

将二进制数整体向右移动。由于一个变量的位数是一定的,对于移出范围的位要舍弃,移入范围的位要补上0。

如下图,我们默认在8位下进行运算:

移位运算符_第2张图片

不难发现,每向左移动一位,相当于在原数的基础上乘以2。

3、注意

我们的移位运算符的移位规则时算术移位而非逻辑移位,所以上面其实是理想化情况的讲解,但并不影响结果。对于实际操作需要明白,当移动完最高位空缺时,最高位补充的应该是符号位。如果都是补0的话,会对原数的正负性产生影响。


总结

一般来说,移位运算比直接进行乘除法快很多,因为计算机底层很多计算的基础都是移位来完成的。
移位运算也应用在很多方面,比如说计算幂次的时候,移位操作比pow函数快很多的。
 
未完待续...


end 

欢迎关注个人公众号 鸡翅编程 ”,这里是认真且乖巧的码农一枚。

---- 做最乖巧的博客er,做最扎实的程序员 ----

旨在用心写好每一篇文章,平常会把笔记汇总成推送更新~

 

在这里插入图片描述

 

 

 

 

你可能感兴趣的:(★,C++,位运算,移位运算,c语言)