您的位置:首页 > 其它

按位运算符(>> << ~ & ^ | )及实例

2013-08-08 20:14 1131 查看
1.移位运算符 :运算符<<和运算符>>的操作数可以是任意整型或字符型的。对两个操作数都会进行整型提升,返回的类型是左边操作数提升后的类型。

i<<j的值是将i中的位左移j位后的结果。每次从i的最左端溢出一位,在i的最右端补一个0位。

i>>j的值是将i中的位右移j位后的结果。如果i是无符号数或者非负数,则需要左端补一个0位。如果i是负数,其结果由实现定义的。

例如:

unsigned int i,j;

i = 13; // i的二进制数为: 0000000000001101

j = i << 2; // j的值为52,二进制为:0000000000110100

j = i >> 2; //j的值为3 二进制为: 0000000000000011

2.按位求反运算符 (~) 按位与运算符(&) 按位异或运算符(^) 按位或运算符(|):这四种运算符都是对操作数的每一位执行布尔运算。

~ 运算符:对操作数求反操作,即将每一个0替换成1,把每一个0替换成1;

& 运算符:两个操作数相应的位执行逻辑与运算。

^ 和 | 运算符: 都是对两个操作数执行逻辑或运算,差异是当两个操作数的位都是1时,^产生0而|产生1.

例如:

int i, j,k;

i = 21 ; //二进制数为: 0000000000010101

j = 56 ; // 二进制数为: 0000000000111000

k = ~i ; // k = 65514 二进制数为: 1111111111101010

k = i ^ j; // k = 45 二进制为: 0000000000101101

k = i & j; // k = 16 二进制为: 0000000000010000

k = i | j ; // k = 61 二进制为: 0000000000111101

优先级: 由高到低: ~ & ^ |
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: