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补全;然后对位数相等的这两个运算数,按位进行位运算。
相关资料
|