1.题目:学习使用按位与 &。
程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 。
程序源代码:
- #include <stdio.h>
- int main()
- {
- int a,b;
- a=077;
- b=a&3;
- printf("a & b(decimal) 为 %d \n",b);
- b&=7;
- printf("a & b(decimal) 为 %d \n",b);
- return 0;
- }
以上实例输出结果为:
a & b(decimal) 为 3
a & b(decimal) 为 3
2. 题目:学习使用按位或 |。
程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 。
程序源代码:
- #include<stdio.h>
- int main()
- {
- int a,b;
- a=077;
- b=a|3;
- printf("b 的值为 %d \n",b);
- b|=7;
- printf("b 的值为 %d \n",b);
- return 0;
- }
以上实例输出结果为:
b 的值为 63
b 的值为 63
3.题目:学习使用按位异或 ^。
程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0 。
程序源代码:
- #include <stdio.h>
- int main()
- {
- int a,b;
- a=077;
- b=a^3;
- printf("b 的值为 %d \n",b);
- b^=7;
- printf("b 的值为 %d \n",b);
- return 0;
- }
以上实例输出结果为:
b 的值为 60
b 的值为 59
4.题目:学习使用按位取反~。
程序分析:~0=-1; ~1=-2;
程序源代码:
- #include <stdio.h>
- int main()
- {
- int a,b;
- a=234;
- b=~a;
- printf("a 的按位取反值为(十进制) %d \n",b);
- a=~a;
- printf("a 的按位取反值为(十六进制) %x \n",a);
- return 0;
- }
以上实例输出结果为:
请输入整数:
a 的按位取反值为(十进制) -235
a 的按位取反值为(十六进制) ffffff15
5.题目:取一个整数 a 从右端开始的 4~7 位。
程序分析:可以这样考虑:
(1)先使 a 右移 4 位。
(2)设置一个低 4 位全为 1,其余全为 0 的数,可用~(~0<<4)
(3)将上面二者进行 & 运算。
- #include <stdio.h>
- int main()
- {
- unsigned a,b,c,d;
- printf("请输入整数:\n");
- scanf("%o",&a);
- b=a>>4;
- c=~(~0<<4);
- d=b&c;
- printf("%o\n%o\n",a,d);
- return 0;
- }
以上实例输出结果为:
请输入整数:
36
36
1