位运算

来源:互联网 发布:乐视刷windows xp 编辑:程序博客网 时间:2024/06/14 00:17

1. printf("%d\n", 34 & 27)的输出结果是:2

34的二进制表示:100010
27的二进制表示: 11011
34&24(按位与)结果为:    000010(十进制为2)

2. printf("%x\n",-12 >> 2 )的输出结果是:ff ff ff fd

-12的二进制表示:  
12的二进制:00000000 00000000 00000000 00001100
    反码: 11111111 11111111 11111111 11110011
补码(+1):11111111 11111111 11111111 11110100
右移二位(右移两位,末端两位舍去,符号位为1,左端补两个1):
11111111 11111111 11111111 11111101(十六进制表示为ff ff ff fd)


3. printf("%d\n",26 | 14)的输出结果是:30
26的二进制表示:11010
14的进制表示: 1110
26|14(按位或)结果为:  11110(十进制为30)

4. printf("%d\n",18 ^ 22)的输出结果是:4
18的二进制表示:10010
22的二进制表示:10110
18^22(按位异或)的结果为:00100(十进制为4)
0 0