学过单片机的人肯定知道,既可以用汇编语言编写单片机程序也可以用C语言来编单片机写程序,其实C语言能支持汇编语言的大部分运算,因此C语言也支持汇编中的按位运算,可以说C语言既有高级语言的特点,又有低级语言的功能,正因为此使得C语言运用很广泛。

c语言中按位运算符(C语言中的位运算与各运算符的用途)(1)

一、位运算操作符:

前面已经提到过一些关于位操作符的简要说明,分别有:按位与操作符(&)、按位或(|)、位取反(~)、按位异或(^)、左移(<<)以及右移(>>),下面对每个作简要说明:

①、按位与(&):此运算符是双目运算符,功能是把参与运算的两数对应的二进制位进行与操作,只有对应的位都为1时才返回1,其余返回0,如38&81=?,首先把他们转换为二进制数,38二进制形式为00100110,81二进制形式为01010001,然后进行按位与操作:00100110&01010001=00000000(十进制数0),因此得到38&80=0。

其实按位与的其中一个用途就是清零,当然还有保留指定位,如98要保留后四位,则可以与上00001111,又如要保留98的1、3、5、7位,那么可以与上01010101,对应位为1即可。

​循环左移的实现:首先呢,有一变量int z,然后将x的高n位保存到z的低n位中,基本整型变量一般是32位(不同机器可能有所不同),怎么实现呢?要想把x的高n位保存到z的低n位中,那就先把x向右移动32-n位,然后直接赋给z就可以了,即z=x>>(32-n),而后将x左移n位,低位以0补齐,即y=x<<n,低位以0补齐,而后通过与z按或运算,y=y|z就可以得到循环左移n位的结果。至于循环右移只需将上面的左移跟右移符号颠倒一下就可以实现。

,