位操作运算符及应用

来源:互联网 发布:尚学堂 大数据视频 编辑:程序博客网 时间:2024/06/05 18:11

位操作运算符:

位与(&),位或(|),取反(~),位异或(^),左移(<<),右移(>>)



按位与运算符“&”是双目运算符,其功能是参与运算的两个数字对应的二进制位相与。只有对应的两个二进制位均为1时,结果才为1,否则为0.参与运算的数以补码方式出现。

例如,9&5可写算式如下:

0000 1001(9的二进制补码)&  0000 0101 (5的二进制补码)

0000 0001 (1的二进制补码)

0000 1001

0000 0101

0000 0001 = 1

按位与运算通常用来对某些位清0或保留某些位。例如,把a的高8位清0,保留低8位,可做a&255 运算(255 的二进制数为0000 0000 1111 1111).

应用:

(1)清0特定位(mask中特定位置0,其他位为1,s = s&mask)。

(2)取某数中指定位(mask中特定位置1,其他位为0,s = s&mask).




安慰或运算符“|”是双目运算符。其功能是参与运算的两个数字对应的二进制位相或。只要对应的两个二进制位有一个为1时,结果位就为1.参与运算的两个数均以 补码出现。

例如:9|5可写算式如下:

0000 1001 |  0000 0101

0000 1101  = 13

应用:常用来将源操作数某些位置1,其他位不变(mask中特定位置1,其他位为0, s = s&mask).




按位异或运算符“^”.其功能是参与运算的两个数字对应的二进制位相异或。当对应的二进位相异时,结果为1.参与运算数仍以补码出现。

例如:9^5可写算式如下:

0000 1001 ^  0000 0101

0000 1100 = 12


应用:

(1)使特定位的值取反(mask中特定位置1,其他位为0,s = s^mask)

(2)不引入第三变量交换两个数的值(设 a = a1,b = b1)

目标                                         操作                                     操作后状态

a = a1^b1                                  a =a^b                                   a = a1^b1,b = b1

b = a1^b1^b1                            b =a^b                                   a =a1^b1,b = a1

a = b1^a1^a1                            a =a^b                                   a= b1,b =a1




左移(<<)和右移( >> )的区别:

左移是拿0来补位,右移是拿符号位来补位,所以位操作一定是操作无符号数。



0 0
原创粉丝点击