欢迎来到天天文库
浏览记录
ID:36324587
大小:369.31 KB
页数:26页
时间:2019-05-09
《c语言第14章位运算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、教学内容:14.1位逻辑运算14.2位移位运算14.3复合位运算14.4位段教学要求:1.掌握按位与运算、按位或运算、按位异或运算、取反运算、左移运算、右移运算的运算规则。2.掌握位段的应用。第14章位运算为了节省内存空间,在系统软件中常将多个标志状态简单地组合在一起,存储到一个字节(或字)中。C语言提供了实现将标志状态从标志字节中分离出来的位运算功能。C既具有高级语言的特点,又具有低级语言的功能,位运算能力就是其特色之一。位运算就是指进行二进制位的运算。C提供的位运算有:名称运算符名称运算符按位与&按位异或按位或¦左移<<取反~右移>>14.1位逻辑运算1.位运算说明(1
2、)位运算的操作数,只能是整型或字符型数据,不能为实型数据。(2)位运算符中除按位取反“~”为单目运算符外,其余均为二目运算符,即要求两侧各有一个运算量。(3)参与运算时,操作数都必须首先转换成二进制形式,然后再执行相应的按位运算。2.按位与运算符(1)按位与运算符:&(2)按位与运算格式:操作数&操作数(3)按位与运算规则将2个操作数先转换成二进制数(补码),当参加运算的2个二进制数之对应位都为1,则该位的结果为1,否则为0,即:0&0=00&1=01&0=01&1=1例:3&5=13的补码:000000115的补码:000001013&500000001取一个数中的某些指定
3、位清零如:a:0010110010101100b:0000000011111111(377)8a&b0000000010101100结果得到a的低8位(4)按位与运算作用main(){intx,y;x=25;y=568;printf(“x&y:%d”,x&y);printf(“3&14:%d”,3&14);printf(“-3&14:%d”,-3&14);printf(“12&12:%d”,12&12);}运行结果:x&y:243&14:2-3&14:1212&12:12例14.1编程对两个整型变量、整型常量分别进行按位与运算,并输出它们的值。程序如下3.按位
4、或运算(1)按位或运算符:¦(2)按位或运算格式:操作数¦操作数(3)运算规则:参加运算的两个运算量之对应位,只要有一个为1,则该位的结果为1。即:0¦0=00¦1=11¦0=11¦1=1例如:00110000(060)800001111(017)8¦00111111(077)8一个数与017进行按位或运算,可将该数的低4位全置为1;与0377进行按位或运算,可将该数的低8位全置为1。4.异或运算(1)运算符(2)按位异或运算格式:操作数操作数(3)按位异或运算规则:参加运算的两个运算量的对应位相同,则该位的结果为0。否则为1。即:00=001=110=111=0
5、(4)运算的用途:使指定的位翻转如:0111101000001111对应原数的低4位均置为101110101原数的低4位被翻转5.取反运算(1)运算符~(2)按位取反运算格式:~操作数(3)按位取反运算规则:是对一个二进制数按位取反,即将0变为1,1变为0。例如:a的补码:0000110010010011~a1111001101101100(4)按位取反运算主要用途按位取反运算主要用途是间接地构造一个数,以增强程序的可移植性。例如,通过求~0,可以间接地构造一个各位全1的二进制数。main(){intx=-25;unsignedinty=0;printf(“~25:%d
6、”,~25);printf(“~x:%d”,~x);printf(“~y(1):%d”,~y);printf(“~y(2):%u”,~y);}运行结果:~25:-26~x:24~y(1):-1~y(2):65535例14.2编程输出按位取反运算的值。程序如下:14.2位移位运算1.按位左移运算(1)按位左移运算符:<<(2)按位左移运算格式:操作数<<移位数(3)按位左移运算规则:将一个操作数先转换成二进制数,然后将二进制数各位左移若干位,并在低位补若干个0,高位左移后溢出,舍弃不起作用。(4)按位左移运算用途:将乘以2n的幂运算处理为左移n位。例如:7<<2按位
7、左移表达式的值:28例14.3变量的位运算符#includemain(){unsigneda;a=7<<2;aprintf("a=%d",a);}运行结果:a=280000000000000111000000000000011100整体左移2位后补2位02.右移运算(1)按位右移运算符:>>(2)按位右移运算格式:操作数>>移位数值(3)按位右移运算规则:将一个操作数先转换成二进制数,然后将二进制数各位右移若干位,移出的低位舍弃;并在高位补位,补位分2种情况:①若为无符号数,右移时
此文档下载收益归作者所有