C++ 按位运算符

按位运算符

按位运算符有六个:

& 按位与(AND                            | 按位或(OR

^ 按位异或(EOR                         ~ 取反(NOT

>> 右移                                                 <<左移

 

1.AND运算符

AND运算符

0

1

0

0

0

1

0

1

char letter1 = ‘A’, letter2 = ‘Z’, result = 0;

result = letter1 & letter2;

计算:

letter10x41           0100         0001

letter2:    0x5A         0101         1010

result:      0x40          0100         0000

//result = ‘@’;

 

2.OR运算符

OR运算符

0

1

0

0

1

1

1

1

short vredraw = 0x01;

short hredraw = 0x02;

style = hredraw | vredraw;

hredraw0x02        0000         0000         0000         0010

vredraw0x01        0000         0000         0000         0001

style0x03               0000         0000         0000         0011

 

3.EOR运算符

EOR运算符

0

1

0

0

1

1

1

0

result = letter1^ letter2;

letter10x41           0100         0001

letter2:    0x5A         0101         1010

result:      0x1B                   0001         1011

// result此时为十进制的27

 

现在假设first的值是’A’ 0100 0001,last的值是’Z’ 0101 1010

first ^= last;               // f = 0001 1011

last ^= first;               // l = 0100 0001

first ^= last;               //f = 0101 1010

//firstlast在不占用任何中间存储单元的情况下交换了值。这适用于所有整数值。

 

4.NOT运算符

NOT运算符(取反)

0

1

~

1

0

result = ~letter;

如果letter0100 0001,那么变量result结果为1011 1110,即0xBE,或十进制值190

 

5.移位运算符

“离开”变量任一端的位都将丢失。

 

十进制数16387的二进制表示:          0100         0000         0000         0011

向左移动两位:                                          0000         0000         0000         1100                  结果:12

//(左边这两位向左移出边界,被舍弃)

向右移动两位:                                          0001         0000         0000         0000                   结果:4096

//(右边这两位向左移出边界,被舍弃)

转载于:https://my.oschina.net/imtoby/blog/72118

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值