C++位运算符

| 或运算符 

如果两个相应的二进制位只要有一个是1,结果就是1;否则为0。比如:1|0=1,0|0=0;


&与运算符 

如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。比如:1&1=1,1&0=0;


^异或运算符 

2个位置在不相等的情况下为1,比如:1^1=0,1^0=1;


<<左移运算符 

先把数转化为2进制再进行左移操作(向左移一位,右边自动补0) 操作如下:

11 << 1 = 22

00001011 << 1//将11转化成2进制,左移一位变成00010110 ,这里的例子用的是8位的 unsigned char 来做例子

00010110 = 22 //然后进行左移运算的00010110转化成10进制

相当于二进制的每个数都变成当前值的两倍,结果就是变成当前值的两倍。

n * 2 == (n << 1)

推广下就是(注意可能会溢出)


>>右移运算符  

先把数转化为2进制再进行左移操作(向右移一位,左边自动补0) 操作如下:

11 >> 1 =  5

00001011 >> 1

00000101 = 5

注意到最后一位的1被干掉了。


~运算符

这个在加法中用到

x-y = x + ~y + 1

所以~y = – y  -1

 

比如 ~11 = -11 -1 = -12



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值