C程序设计(第三版)主讲:王榕C程序设计(第三版)课程要求★★课前请做好预习课前请做好预习★★课堂安静,头脑清醒,思维活跃课堂安静,头脑清醒,思维活跃★★认真、保持独立、按时完成并提交作业认真、保持独立、按时完成并提交作业★★重视上机实践,有效利用上机时间重视上机实践,有效利用上机时间C程序设计(第三版)第十二章第十二章位运算位运算C程序设计(第三版)主要内容主要内容12.112.1位运算符和位运算位运算符和位运算12.212.2位运算举例位运算举例12.312.3位段位段C程序设计(第三版)概念位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。例如:将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。C语言提供位运算的功能,与其他高级语言(如PASCAL)相比,具有很大的优越性。C程序设计(第三版)12.112.1位运算符和位运算位运算符和位运算运算符含义运算符含义运算符含义运算符含义&&按位与按位与~~取反取反||按位或按位或<<<<左移左移∧∧按位异或按位异或>>>>右移右移(1)(1)位运算符中除~以外,均为二目(元)运算符,位运算符中除~以外,均为二目(元)运算符,即要求两侧各有一个运算量。即要求两侧各有一个运算量。(2)(2)运算量只能是整型或字符型的数据,不能为实运算量只能是整型或字符型的数据,不能为实型数据。型数据。C语言提供的位运算符有:说明:说明:C程序设计(第三版)12.1.1“12.1.1“按位与按位与””运算符运算符(&)(&)按位与是指:按位与是指:参加运算的两个数据,按二进制位进行参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。即:该位的结果值为1;否则为0。即:0&0=0,0&1=0,1&0=0,1&1=10&0=0,0&1=0,1&0=0,1&1=1例:例:3&5并不等于8,应该是按位与运算:3&5并不等于8,应该是按位与运算:注意:注意:如果参加如果参加&&运算的运算的是负数(如是负数(如-3&-5-3&-5),则),则要以补码形式表示为二进要以补码形式表示为二进制数,然后再按位进行制数,然后再按位进行“与”运算。“与”运算。0000001100000011(3)(3)&&0000010100000101(5)(5)0000000100000001(1)(1)3&5的值得1C程序设计(第三版)按位与的用途:按位与的用途:若想对一个存储单元清零,即使其全部二进若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符制位为0,只要找一个二进制数,其中各个位符合以下条件:合以下条件:原来的数中为1的位,新数中相应原来的数中为1的位,新数中相应位为0。位为0。然后使二者进行&运算,即可达到清零然后使二者进行&运算,即可达到清零目的。目的。(1)(1)清零。清零。例:例:原有数为原有数为0010101100101011,另,另找一个数,设它为找一个数,设它为1001010010010100,,这样在原数为1的位置上,这样在原数为1的位置上,该数的相应位值均为0。将该数的相应位值均为0。将这两个数进行&运算:这两个数进行&运算:0010101100101011&&10010100100101000000000000000000C程序设计(第三版)(2)(2)取一个数中某些指定位。取一个数中某些指定位。如有一个整数a(2个字节),想要如有一个整数a(2个字节),想要取其中的低字节,只需将a与取其中的低字节,只需将a与88个个11按位按位与即可。与即可。0010110010101100abc00000000111111110000000010101100C程序设计(第三版)(3)(3)保留一位的方法:与一个数进行&运算,保留一位的方法:与一个数进行&运算,此数在该位取1。此数在该位取1。即:即:a=84,b=59a=84,b=59;;c=a&bc=a&b;;例:例:有一数01010100,想把其有一数01010100,想把其中左面第3、4、5、7、8位保留中左面第3、4、5、7、8位保留下来,运算如下:下来,运算如下:0101010001010100(84)(84)&&0011101100111011(59)(59)0001000000010000(16)(16)C程序设计(第三版)12.1.212.1.2““按...