【2022官方C语言】9小时快速学会C语言!动画讲解C语言视频教程 c语言零基础

位运算
运算符
含义
优先级别
~
按位取反
1(高)
<<
左移
2
>>
右移
3
&
按位与
4
^
按位异或
5
|
按位或
6(低)
Ø 位运算符的运算功能
一、“按位取反”运算~
a:10001101 b=~a; b:01110010
二、“左移”运算
a:00000110 b=a<<2; b:00011000
三、“右移”运算
a:00000110 b=a>>2; b:00000110
四、“按位与”运算
a:00000110 b:00111110
则a&b的结果为:
00000110
& 00111110
00000110
五、“按位异或”运算
00110011
^ 11000011
11110000
六、“按位或”运算
01010011
| 00001100
01011111
Ø 位数不同的运算数之间的运算规则
位运算的对象可以是整型和字符型数据。当两个运算数类型不同时位数亦会不同。遇到这种情况,系统将自动进行如下处理:
1、先将两个运算数右端对齐
2、再将位数短的一个运算数往高位扩充:无符号数和正整数左侧用0补全,负数左侧用1补全,然后对位数相等的这两个运算数按位进行位运算。
Ø 练习:
一、选择题
1、有以下程序:
#include<stdio.h>
void main(){
char x=040;
printf(“%d\n”,x=x<<1);
}
程序运行后的输出结果是( )
A.100 B.160 C.120 D.64
2、设有定义语句:
char a=3,b=6,c;
则执行复制语句c=a^b<<2;后变量c中的二进制值是( )
A.00011011 B.00010100 C.00011100 D.00011000
3、有以下程序:
#include<stdio.h>
void main(){
short int x=35; char z=’A’;
printf(“%d\n”,(x&15)&&(z<’a’));
}
程序运行后的输出结果是( )
A.0 B.1 C.2 D.3
4、有以下程序:
#include<stdio.h>
void main(){
short int a=5,b=6,c=7,d=8,m=2,n=2;
printf(“%d\n”,(m=a>b)&(m=c>d));
}
程序运行后的输出结果是( )
A.0 B.1 C.2 D.3
二、填空题
1、设变量a的二进制数是00101101,若想通过运算a^b使a的高四位取反,低四位不变,则b的二进制数应是 。
2、a为任意整数。能将变量a清零的表达式是 。
3、a为八进制数07101。能将变量a中的各二进制位均置成1的表达式是 。
4、能将两字节变量x的高八位全置1,低八位字节保持不变的表达式是 。
5、运用位运算,能将八进制数012500除以4,然后赋给变量a的表达式是 。
6、运用位运算,能将字符型变量ch中的大写字母转换成小写字母的表达式是