第10章位运算11
1位运算符11
3应用举例11
1位运算符当两个运算对象的位数不同时,系统将自动进行如下处理:先将两个运算数右端对齐
再将位数不足的一个运算对象向高位扩充,即:无符号数和正整数左端用0补齐;负数左端用1补齐;然后对位数相等的这两个数按位进行运算
“按位与”运算(&)“按位与”运算是将参加运算的两操作对象,按对应的二进制位分别进行“逻辑与”运算
运算规则为:只有两个相应位都为1时,该位的运算结果才为1;两个相应位的值相异或均为0时,该位的运算结果为0
1位运算符【例11
1】求表达式12&10的值
main(){charx=12,y=10;printf(“%d,%d\n”,x,y);x=x&y;printf(“%d,%d\n”,x,y);}输出结果为:12,108,1011
1位运算符按位与运算用途:清零:若想将某个存储单元清零,只需将这个存储单元的值与零进行“与”运算
2】分析下面程序结果main(){charch=46;printf("%d\n",ch);ch=ch&0;printf("%d\n",ch);}输出结果为:46011
1位运算符获取指定位:如果要想获取某数据X的指定位,则可以用一个数与X进行“与”运算,此数在与指定位相同的位上的值为1,其余各位为0
3】从键盘输入一个整数,判断此数是否能被2整除
#includemain(){intx;printf("Pleaseinputanumber:");scanf("%d",&x);if((x&0x01)==0)/*通过与运算,只保留该数的最低位,然后判断其是否为0*/printf("\n%dcanbedividedby2exactly
",x);/*最低位为0,该数能被2整除*/elseprintf("\n%dcan’tbedividedby