《C程序设计 第13章 中断和位运算.ppt》由会员分享,可在线阅读,更多相关《C程序设计 第13章 中断和位运算.ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第13章中断和位运算13.1 13.1 中中 断断 13.2 13.2 位位 运运 算算13.2 13.2 位位 运运 算算13.2.1 位运算符位运算符C语言提供了语言提供了6种位运算运算符。种位运算运算符。&按位与运算按位与运算|按位或运算按位或运算 按位异或运算按位异或运算 按位取反运算按位取反运算 按位右移运算按位右移运算 其其中中运运算算符符是是单单目目运运算算符符,其其余余的的都都是是双双目目运运算算符符。位位运运算算的的运运算算对对象象只只能能是是整整型型和和字字符符型数据,不能是浮点型数据。型数据,不能是浮点型数据。当当位位运运算算两两侧侧的的运运算算对对象象类类型型不不相相同
2、同时时,要要发生类型的自动转换。发生类型的自动转换。1按位与运算按位与运算&运算的含义是对参与按位与运算运算的含义是对参与按位与运算的两个运算对象按二进制方式对对应位进行的两个运算对象按二进制方式对对应位进行与运算,也就是对参与运算的两个运算对象与运算,也就是对参与运算的两个运算对象的机器码的对应位进行与运算。当与运算的的机器码的对应位进行与运算。当与运算的两个对应位都为两个对应位都为1时,运算结果的对应位也时,运算结果的对应位也为为1;否则运算结果的对应位为;否则运算结果的对应位为0。假定某函数体有数据描述:假定某函数体有数据描述:int a=3,b=1;char c=A 那么:那么:(1)
3、表达式)表达式a&6的值是的值是2。a的机器码的机器码=0000 00000000 0011&6的机器码的机器码=0000 00000000 0110 0000 0000 0000 00102按位或运算按位或运算按位或运算的含义是对参与按位或运算按位或运算的含义是对参与按位或运算的两个运算对象按二进制方式对对应位进行或运的两个运算对象按二进制方式对对应位进行或运算,也就是对参与运算的两个运算对象的机器码算,也就是对参与运算的两个运算对象的机器码的对应位进行或运算。当或运算的两个对应位都的对应位进行或运算。当或运算的两个对应位都为为0时,运算结果的对应位也为时,运算结果的对应位也为0;否则运算结
4、果;否则运算结果的对应位为的对应位为1。假定某函数题有数据描述:假定某函数题有数据描述:int a=3,b=1;char c=A 那么:那么:(1)表达式)表达式a|6的值是的值是7。a的机器码的机器码 =0000 0000 0000 00116的机器码的机器码 =0000 0000 0000 0110 0000 0000 0000 01113按位异或运算按位异或运算 运运算算的的含含义义是是对对参参与与按按位位异异或或运运算算的的两两个个运运算算对对象象按按二二进进制制方方式式对对对对应应位位进进行行异异或或运运算算,也也就就是是对对参参异异或或运运算算的的两两个个运运算算对对象象的的机机器
5、器码码的的对对应应位位进进行行异异或或运运算算。当当异异或或运运算算的的两两个个对对应应位位不不相相同同时时,运运算算结结果果的的对对应应位位为为1;否否则则运运算结果的对应位为算结果的对应位为0。假定某函数题有数据描述:假定某函数题有数据描述:int a=3,b=1;char c=A 那么:那么:表达式表达式a 6的值是的值是5。a的机器码的机器码 =0000 0000 0000 0011 6的机器码的机器码 =0000 0000 0000 0110 0000 0000 0000 01014按位取反运算按位取反运算 运运算算的的含含义义是是对对参参与与取取反反运运算算的的运运算算对对象象按按
6、二二进进制制方方式式对对每每一一个个位位求求反反,也也就就是是对对参参与与取取反反运运算算的的运运算算对对象象的的机机器器码码按按位位取取反反。如如果果某某位位为为1,则则变变为为0;为为0,则则变为变为1。取反运算符是单目运算符。取反运算符是单目运算符。假定某函数题有数据描述:假定某函数题有数据描述:int a=3,b=1;那么:那么:a的机器码的机器码0000 0000 0000 0011a的机器码的机器码1111 1111 1111 1100取反后取反后a的值为的值为4。b的机器码的机器码1111 1111 1111 1111b的机器码的机器码0000 0000 0000 0000取反后
7、取反后b的值为的值为0。5按位左移运算按位左移运算 运运算算符符的的作作用用是是对对参参与与运运算算的的运运算算对对象象按按规规定定的的位位移移数数进进行行左左移移,即即对对运运算算对对象象的的机机器器码码左左移移规规定定的的位位。运运算算符符的的左左操操作作数数是是需需要要移移位位的的数数据据,右右操操作作数数是是移移位位的的位位数数。在在移移位位的的过过程程中中高高位位移移出出的的位位舍舍弃弃,低低位位左左移移后后补补0。运运算算符符构构成成的的表表达达式式一一般般格格式式为为an,其其中中a是是需要移位的数据,需要移位的数据,n是移位的位数。是移位的位数。假定某函数题有数据描述:假定某函
8、数题有数据描述:int a=3,b=1;那么:那么:a1 移位前移位前a的机器码的机器码=0000 0000 0000 0011 移位后移位后a的机器码的机器码=0000 0000 0000 0110 左移后补左移后补0移位后移位后a=6。b运运算算符符的的作作用用是是对对参参与与运运算算的的运运算算对对象象按按规规定定的的位位移移数数进进行行右右移移,即即对对运运算算对对象象的的机机器器码码右右移移规规定定的的位位。运运算算符符的的左左操操作作数数是是需需要要移移位位的的数数据据,右右操操作作数数是是移移位位位位数数。在在移移位位的的过过程程中中低低位位移移出出的的位位舍舍弃弃,高高位位右右
9、移移后后补补0或或1;如如果果需需要要移移位位的的数数据据是是无无符符号号数数则则补补0,有有符符号号数数则则补补符符号号位位的的值值。运运算算符符构构成成的的表表达达式式一一般般格格式式为为an,其其中中a是是需需要要移移位位的的数数据,据,n是移位的位数。是移位的位数。假定某函数题有数据描述:假定某函数题有数据描述:int a=4,b=16;那么:那么:a=a1 移位前移位前a的机器码的机器码=0000 0000 0000 0100移位后移位后a的机器码的机器码=0000 0000 0000 0010(黑体表示右(黑体表示右移后补位的内容)移后补位的内容)b=b4 移位前移位前b的机器码的机器码=1111 1111 1111 0000移位后移位后b的机器码的机器码=1111 1111 1111 1111移位后移位后b=1。7复合的位运算赋值运算符复合的位运算赋值运算符 位位运运算算符符和和赋赋值值运运算算符符可可以以组组成成复复合合的的位位运运算算赋赋值值运运算算符符,具具体体含含义义和和复复合合的的算算术术赋赋值值运运算算符符一一样样。所所有有的的复复合合的的赋赋值值运运算算符符优先级都是一样的。优先级都是一样的。复复合合的的位位运运算算赋赋值值运运算算符符有有&=,|=,=,=,=。假如假如int a=16;则则a=2的值为的值为64。