①~逻辑运算非:即取反,~0=1;~1=0;
②&逻辑运算与:当且仅当a和b都为1,a&b才为1;
③^逻辑运算异或:a和b不同值则为1,相同则为0
④ | 逻辑运算或:当且仅当a和b都为0,才为0
左移 <<:将二进制整体左移,丢弃最高位,低位补0
逻辑右移>>: 对应于无符号数的操作,二进制数整体右移,丢弃低位,在左端高位补0
算术右移 >>:整体右移,在左端的n个高位补原本二进制数最高有效位的值
例:
x=1001 0101
x<<4: 0101 0000
x>>4: 0000 1001 (逻辑右移)
x>>4: 1111 1001 (算术右移)
布尔运算可以在任何整数的数据类型中使用,如char和int
例:
~0x41——>[0100 0001]——> [1011 1110]
~0x00——>[0000 0000]——>[1111 1111]
[0110 1001]&[0101 0101]——>[0100 0001]
[0110 1001]|[0101 0101]——>[0111 1101]
不同于位级运算,运算符分别为&&,||,!,对应于与,或,非,其中,所有非0的参数都表示为true,所以为0的参数都是false;
p||q,若p被判断出是true,则直接跳过对q的判断,得出结果为true;p&&q,若p被判断为false,则直接跳过对q的判断,得出结果为false,即所谓短路功能。
例:
!0x51=0x00 ; !0x00=0x01 ; !!0x41=0x01
0x69&&0x55=0x01 ; 0x69||0x55=0x01
原文:https://www.cnblogs.com/yuanerduo/p/12633883.html