位运算符

来源:互联网 发布:中小企业融资数据统计 编辑:程序博客网 时间:2024/04/29 15:42

 PC词典“位运算” C语言提供的位运算符:

 &  按位与      按位或

 ∧  按位异或   ~  取反

  左移      右移

(相当于Delphi 中

and 按位与      or 按位或

xor 按位异或    not 取反(按位取非)

shl 左移          shr 右移

)

说明:

1、 位运算符中除了~以外,均为二目运算符。

2、运算量只能是整型或字符型的数据,不能为实型数据。

一、“按位与”运算符:

规则:

参加运算的两个运算量,如果两个相应位都为1, 则该位结果值为1,否则为0。

例如: X=10001001 Y=11101110

     

 

     X & Y=10001000

按位与的特殊用途:

1、清零。

方法: 与一个各位都为零的数值相与,结果为零。

    

 

2、取一个数x中某些指定位。

方法: 找一个数,此数的各位是这样取值的:对应x数要取各位,该数对应位为1,其余位为零。此数与x相就可以得到x中的某些位。

例:设X=10101110

(1)取X的低4位

      

 

(2)取X的bit2、bit4、bit6位

      

 

二、“按位或”运算符

规则:

参加运算的两个运算量,如果两个相应位中有个为1,则该位结果值为1,否则为0。

例如 X=10001001 Y=11101110

    

 

   X  Y=11101111

按位或的特殊用途: 常用来对一个数据的某些位置1。

方法:找一个数,此数的各位是这样取值的,对应x数要置1的位,该数对应位为1,其余位为零。此数与x相或就可使x中的某些位置1。

例:使 x=10100000 的低4位为1。

     

 

三、“异或”运算符

规则:参加运算的两个运算量,如果两个相应位为“异” (值不同),则该位结果值为1,否则为0。

例如 X=10001001 Y=11101110

    

 

    

     X^Y=01100111

异或运算的应用:

(1)使特定位翻转: 找一个数,此数的各位是这样取值的:对应x数要转的各位,该数对应位为1,其余位为零。此数与x相或即可。

例:x=10101110, 使x低4位翻转

    

 

(2)与0相异或,保留原值。 例、

      

 

四、“取反”运算符 ~

对一个二进制数按位取反,即将0变为1,1变为0。

例: 0100001110010111 取反 1011110001101000

注意:~运算符的优先级别比算术运算符、关系运算符、逻辑运符和其它运算符都高。

例:使一个数a的最低位为零,可以表示成:

   a & ~ 1

因为,~1=1111111111111110。

五、左移运算符《

将一个数的各二进制全部左移若干位。(左丢弃,右补0)

例:a=a2 将a的二进制数左移2位,右补0。

若左移时舍弃的高位不包含1,则数每左移一位,相当该数乘以2。

六、右移运算符》

将一个数的各二进制位全部右移若干位。(正数左补0/负数左补1,右丢弃)

例:a=a2 将a的二进制数右移2位。

将一操作数左移一位,相当于将其乘2。将一操作数右移一位,相当于将其除以2。

因此,可以用移位操作代替部分乘除操作,只要不产生溢出,这种代替是正确的。

(用CF标志判别无符号数运算是否溢出,CF=1,表示溢出。

 用OF标志判别有符号数运算是否溢出,OF=1,表示溢出)。

七、位运算符与赋值运算符结合,组成展的赋值运算符。

&=, 例:a&=b 相当于 a=a&b

=, 例:a=b 相当于 a=ab

=, 例:a =b 相当于 a=ab

=, 例:a=b 相当于 a=ab

∧=, 例:a∧=b a = a∧b

 

原创粉丝点击