C语言程序设计位运算.doc
文本预览下载声明
选择题
1、读程序片段:
int x=20;
printf(“%d\n”, ~x);
上面程序片段的输出结果是( ).
A)02 B)–20 C)-21 D)-11
2、表达式~0x13的值是( ).
A)0xFFEC B)0xFF71 C)0xFF68 D)0xFF17
3、在位运算中,操作数每右移一位,其结果相当于( ).
A)操作数乘以2 B)操作数除以2 C)操作数除以4 D)操作数乘以4
4、在位运算中,操作数每左移一位,其结果相当于( ).
A)操作数乘以2 B)操作数除以2 C)操作数除以4 D)操作数乘以4
5、设有以下语句:
char x=3,y=6,z;
z=x^y2;
则z的二进制值是( ).
A B C D6、请读程序:
struct bit
{unsigned a_bit:2;
unsigned b_bit:2;
unsigned c_bit:1;
unsigned d_bit:1;
unsigned e_bit:2;
unsigned word:8;
};
main()
{struct bit *p;
unsigned int modeword;
printf(“Enter the mode word (HEX):”);
scanf(“%x”,modeword);
p=(struct bit *)modeword;
printf(“\n”);
printf(“a_bit: %d\n”,p -a_bit);
printf(“b_bit: %d\n”,p -b_bit);
printf(“c_bit: %d\n”,p -c_bit);
printf(“d_bit: %d\n”,p -d_bit);
printf(“e_bit: %d\n”,p -e_bit);}
若运行时从键盘输入: 96回车 则以上程序的运行结果是( ).
A)a_bit: 1 B) a_bit: 2 C)a_bit: 2 D) a_bit: 1
b_bit: 2 b_bit: 1 b_bit: 1 b_bit: 2
c_bit: 0 c_bit: 0 c_bit: 1 c_bit: 2
d_bit: 1 d_bit: 1 d_bit: 0 d_bit: 0
e_bit: 2 e_bit: 2 e_bit: 2 e_bit: 1
7、设有以下说明:
struct packed
{ unsigned one:1;
unsigned two:2;
unsigned three:3;
unsigned four:4;
} data;
则以下位段数据的引用中不能得到正确数值的是( ).
A) data.one =4 B) data.two=3 C) data.three =2 D) data.four=1
8、设位段的空间分配由右到左,则以下程序的运行结果是( ).
struct packed_bit
{unsigned a:2;
unsigned b:3;
unsigned c:4;
int i;
} data;
main()
{data.a=8; data.b=2;
printf(“%d\n”,data.a+data.b);}
A) 语法错 B) 2 C) 5 D) 10
二、填空题
1、在C语言中,运算符作为单目运算符时表示的是【 】;作为双目运算符时表示的是【】运算.
2、与表达式a=b 等价的另一书写形式是【 】.
3、与表达式x^=y-2等价的另一书写形式是【 】.
4、请读程序片段:
int a=1,b=2;
if(ab)printf(“***\n”);
else printf(“$$$\n”);
以上程序片段的输出结果是【 】.
5、设有char a,b;若要通过ab运算屏蔽掉a中的其它位,只保留第2和第8位(右起为第1位),则b的二进制数是【 】.
6、测试char型变量a第六位是否为1的表达式是【 】(设最右位是第一位)
7、设二进制数x的值若想通过xy运算使x中的低4位不变,高4位轻零,则y的二进制数是【 】.
8、请读程序片段:
int a=-1;
a=a |0377;
printf(“%d,%o\n”,a,a);
以上程序片段的输出结果是【 】.
9、设x是一
显示全部