1.说明:将数据中的每个二进制位上的0/1作为逻辑值,按位运算
位逻辑运算符分为按位非、按位与、按位或和按位异或四种
( 规则:~按位取反,&同时为1才为1,|有一边为1就为1,^相同为0不同为1)
2.题目:
设int a=2,b=5;,结果为0的表达式是 ? A a%b B a&b C a=b D a!=b
- 分析:A: a%b→2%5=2
- B:a&b→2&5→0010&0101=0
- C:a=b将b的值赋给a,a=5
- D:a!=b→2≠5结果为真1
3.题目:设int x=1,y=-1;
则执行语句printf("%d\n”,x--&++y);后输出结果是 ?
- 分析:x--&++y→1&0=0
4.题目:
下面值为0的表达式是? A 0==0 B 2&&5 C !5<2 D 2&5
- 分析:A:0==0为真输出1
- B:2&&5两边都不为0是真的,输出1
- !5<2→5是非0数字,那么!5=0,所以0<2为真输出1
- 2&5→0010&0101=0
5.题目:
下列表达式值为0的是? A 5/2 B 2&&5 C !2 || 5 D 2&5
- 分析:A:5/2=2
- B:2&&5两边都不为0是真的,输出1
- C: !2 || 5,2是非0数,那么!2=0,0 || 5=1
- 2&5→0010&0101=0
6.题目:设int x=1,y=2;
则执行语句printf("%d\n",x&y);后输出结果是?
- 分析:x&y=1&2=0001&0010=0
7.题目:设int x=3,y=5;
则执行printf("%d\n",x^y);后输出?
- 分析:x^y=3^5=0011^0101=0110=6
8.题目:执行语句printf("%d\n",4&5/6);后的输出结果是?
- 分析:4&5||6:根据运算符优先级,&排8,||排12
- 所以4&5=0100&0101=0100=4
- 接着 4 ||直接短路输出1