位运算

1. 按位左移"<<"

按位左移运算符"<<"的作用是对参与运算的对象按规定的位数进行左移,即对运算对象的机器码左移规定的位。在移位的过程中,高位移出的位舍弃,低位左移后补0. 左移一位相当于该数乘以2,按位左移比乘法运算快得多。

2. 按位右移">>"

在移位的过程中,低位移出的位舍弃,高位右移后补0或者补1.如果需要移位的数据室无符号数则补0,是有符号数则补符号位。

3. 按位与"&"

int a=0x36,b=0xc0,c;
c
=a&b;

4. 按位或"|"

5. 按位异或"^"

数据交换
a
=a^b;
b
=b^a;
a
=a^b;

6. 按位取反"~"

7.设置位与清除位

要设置或清除某个位,可以使用掩码运算。如果有一个4字节的标号,要将第8位设置为TRUE,可对该变量和128进行“或运算”。

要清除第8位,将该变量和128的反码进行“与运算”

8.反转位

要反转第8位,可将该位与128进行“异或运算”

9.位字段

位字段应用在struct或者class中,它的类型总是unsigned int,并在为字段后加冒号和数字。所占空间是4的倍数。

Code

输出:

4

64.

如果data.b=300,而b只占8位,输出结果是44,丢弃了最高位。

posted on 2009-10-27 23:03  怂QQ  阅读(298)  评论(0)    收藏  举报