C/C++位运算符

位运算是指按二进制进行的运算[@more@]

在程序中,常常需要处理二进制位的问题。C/C++语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。
在实际应用中,建议用unsigned整型操作数,因为带符号操作数可能因为不同机器结果不同。
c++和c的位操作运算符完全相同,但c++中增加了bitset标准库来支持位集操作,具体内容请参考http://book.51cto.com/art/200809/88698.htm或者http://book.csdn.net/bookfiles/17/1001760.shtml,这些链接都是《C++ Primer中文版》中的内容,大家也可以直接看书。
下面是C/C++位操作运算符列表,其中运算符优先级为从上到下递减,但<>优先级相同。

C/C++位操作运算符
操作符功能用法
~位求反~expr
<<左移expr1 << expr2
>>右移expr1 >> expr2
&位与expr1 & expr2
^位异或expr1 ^ expr2
|位或expr1 | expr2

代码示例如下:

复制代码
 
   
1 #include
2 using namespace std;
3 int main(){
4 unsigned short x=3,y=5;
5 cout<6 cout<7 cout<8 cout<9 cout<10 cout<11 cout<>1="<>1)<12 return 0;13 }

运算结果如下:

~x=65532

~x=-4

x&y=1

x^y=6

x|y=7

x<<1=6

y>>1=2

代码解释如下:
short为16位整数,故x,y的二进制表示如下:
x=3(00000000 00000011)
y=5(00000000 00000101)


~ 00000000 00000011
= 11111111 11111100(65532或者-4)(至于为什么同样的二进制位表示的数不一样,这与计算机的数值表示有关,具体原因可搜索“补码”)


00000000 00000011
& 00000000 00000101
= 00000000 00000001(1)


00000000 00000011
^ 00000000 00000101
= 00000000 00000110(6)


00000000 00000011
| 00000000 00000101
= 00000000 00000111(7)


00000000 00000011<<1
= 00000000 00000110(6)


00000000 00000101>>1
= 00000000 00000010(2)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/640706/viewspace-1059720/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/640706/viewspace-1059720/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值