[二级C试题天天练]C语言考试试题10

全国等级考试资料网 2019-01-23 14:12:33 73

21 以下程序的功能是进行位运算
 main()
 { 
        unsigned char a, b;
  a=7^3; b= ~4 & 3; 
  printf("%d %d ",a,b);
 }
程序运行后的输出结果是
 A)4 3 B)7 3 C)7 0 D)4 0

答案:a
解析:a=7^3=111^11=100=4(十进制),b=~4&3=~100&11=11&11=11=3(十进制),所以答案为a 
“按位与”运算
运算符作用:把参加运算的两个运算数,按对应的二进制位分别进行“与”运算,当两个相应的位都为1时,该位的结果为1,否则为0。
如: 12 : 00001100
    & 10 : 00001010
     结果 : 00001000
按位“与”运算特征:任何位上的二进制数,只要和0“与”,该位即被屏蔽(清零);和1“与”,该位保留原值不变。
“按位异或”运算
异或运算的规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0;数不同,则该位的结果为1。
如: 00110011
    ^ 11000011
结果 11110000
“按位异或”运算特征:数为1的位和1“异或”结果为1,原为0的位和1“异或”结果就为1;而和0“异或”的位其值均未变。
“按位或”运算
按位或的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中有一个为1,该位的运算结果即为1;只有当两个相应位的数都为0是,该位的运算结果才为0。
如: 0123 : 01010011
         014 : 00001100
结果 0123| 014 : 01011111
位数不同的运算数之间的运算规则
位运算的对象可以是整型和字符型数据。当两个运算数类型不同时位数亦会不同。遇到这种情况,系统将自动进行如下处理:
(1) 先将两个运算数右端对齐。
(2) 再将位数短的一个运算数往高位扩充,即:无符号数和正整数左侧用0补全;负数左侧用1补全;然后对位数相等的这两个运算数,按位进行位运算。 

相关资料

相关阅读