《C语言程序设计》课程教学资源(PPT课件讲稿)第十二章 位运算

12.1位运算 C语言具有位逻辑运算和移位运算的 独特功能,参与位运算的运算量必须是整 数。位逻辑运算包括&、|、∧、~四种运 算,移位运算有两种运算。其中⌒ 位单目运算符。 x
12.1 位运算 C语言具有位逻辑运算和移位运算的 独特功能,参与位运算的运算量必须是整 数。位逻辑运算包括&、|、∧、~四种运 算,移位运算有>两种运算。其中~ 位单目运算符

12.1.1按位与 12.12按位或 12.13按位异或 12.14按位取反 12.15按位左移 12.16按位右移 121.7位运算的复合 赋值运算符 x
12.1.1 按位与 12.1.2 按位或 12.1.3 按位异或 12.1.4 按位取反 12.1.5 按位左移 12.1.6 按位右移 12.1.7 位运算的复合 赋值运算符

12.1.1按位与 参与运算的量,如果相对应的两位都为1,则该位 的结果值为1,否则为0,即: 0&0==0081==0180==0181==1 如:a的值为0x1234,b的值为0x00,a&b运算的结果c应为: a0001001000110100 8b000000001111111 c0000000000110100 按位与常用于将某个运算量的某些位清0或提取某些位的值, 如本例中,将变量的高8位清0,同时保留或提取低8位的值,可 用一个高8位为0,低8位为1的值0x00f6和它进行按位与
12.1.1 按位与 参与运算的量,如果相对应的两位都为1,则该位 的结果值为1,否则为0,即: 0&0==0 0&1==0 1&0==0 1&1==1 如:a的值为0x1234,b的值为0x00,a&b运算的结果c应为: a 0001 0010 0011 0100 & b 0000 0000 1111 1111 c 0000 0000 0011 0100 按位与常用于将某个运算量的某些位清0或提取某些位的值, 如本例中,将变量的高8位清0,同时保留或提取低8位的值,可 用一个高8位为0,低8位为1的值0x00ff和它进行按位与

12.1.2按位或 参与运算的量,如果相对应的两位都为0,则该 位的结果值为,否则为,即: 00==001==110==111==1 如:a的值为0x1234,b的值为0x00,ab运算的结果c应为: a0001001000110100 b000000001111111 c0001001011111111 按位或常用于将某个运算量的某些位置1,如本例中将变量 的低8位置1,高8位不变,可用一个高8位为0,低8位为1的值 0x00f和它进行按位或
12.1.2 按位或 参与运算的量,如果相对应的两位都为0,则该 位的结果值为0,否则为1,即: 0|0==0 0|1==1 1|0==1 1|1==1 如:a的值为0x1234,b的值为0x00,a|b运算的结果c应为: a 0001 0010 0011 0100 |b 0000 0000 1111 1111 c 0001 0010 1111 1111 按位或常用于将某个运算量的某些位置1,如本例中将变量 的低8位置1,高8位不变,可用一个高8位为0,低8位为1的值 0x00ff和它进行按位或

12.13按位异或 参与运算的量,如果相对应的两位相异,则该位 的结果为1,否则为0,即: 0∧0==00A1==11A0==111==0 如:a的值为0x1234,b的值为0x00,a∧b运算的结果c应为 a0001001000110100 ∧b0000000011111111 c0001001011001011 按位异或有“与1异或”该位翻转,“与0异或”该位不变的 规律。如本例中用0x00进行按位异或,使变量a的低8债翻 高8位不变
12.1.3 按位异或 参与运算的量,如果相对应的两位相异,则该位 的结果为1,否则为0,即: 0∧0==0 0∧1==1 1∧0==1 1∧1==0 如:a的值为0x1234,b的值为0x00,a∧b运算的结果c应为: a 0001 0010 0011 0100 ∧b 0000 0000 1111 1111 c 0001 0010 1100 1011 按位异或有“与1异或”该位翻转,“与0异或”该位不变的 规律。如本例中用0x00ff进行按位异或,使变量a的低8位翻转 ,高8位不变

12.1.4按位取反 将参与运算量的相对应位的值取反,即1变0 0变1。 如:a的值为0x1234,~a运算的结果c应为: a0001001000110100 c1110110111001011 x
12.1.4 按位取反 将参与运算量的相对应位的值取反,即1变0 ,0变1。 如:a的值为0x1234, ~a运算的结果c应为: ~a 0001 0010 0011 0100 c 1110 1101 1100 1011

12.1.5按位左移 按位左移是将一个运算量的各位依次左移若干位, 低位补0,高位舍弃不要。 假设机器字长为8位,变量a的值为16,将a左移二位,即 a=a<<2:左移前00010000 左移后01000000 由此看出,左移一位相当于该数乘2,左移二位相当于乘4 ,即22,但这要以该数左移之后不“溢出”为前提。所谓“溢出 ”指该数已超过机器字长所能容纳的范围,如该例若继续左移二 位,该数为16×24=256,超出了字长8位的表示范围(257) 即产生了溢出
12.1.5 按位左移 按位左移是将一个运算量的各位依次左移若干位, 低位补0,高位舍弃不要。 假设机器字长为8位,变量a的值为16,将a左移二位,即 a=a<<2: 左移前 0001 0000 左移后 0100 0000 由此看出,左移一位相当于该数乘2,左移二位相当于乘4 ,即2 2,但这要以该数左移之后不“溢出”为前提。所谓“溢出 ”指该数已超过机器字长所能容纳的范围,如该例若继续左移二 位,该数为16× 2 4=256,超出了字长8位的表示范围(257), 即产生了溢出

12.16按位右移 按位右移是将一个运算量的各位依次右移若干位 低位被移出,髙位对元符号数和υ,对有符号数要按最 高符号位自身填补。 右移一位相当于该数除以2,但有可能带来误差。假设机器 字长为8位,变量a值为15,将a右移二位,即a=a>>2 右移前00001111 右移后00000011 如果a是带符号的负数,a=-16,存放在机器中的补码为 11110000,则a=a>>2,值为-4。 右移前11110000 x 右移后11111100
12.1.6 按位右移 按位右移是将一个运算量的各位依次右移若干位, 低位被移出,高位对无符号数补0,对有符号数要按最 高符号位自身填补。 右移一位相当于该数除以2,但有可能带来误差。假设机器 字长为8位,变量a值为15,将a右移二位,即a=a>>2: 右移前 0000 1111 右移后 0000 0011 如果a是带符号的负数,a=-16,存放在机器中的补码为 1111 0000,则a=a>>2,值为- 4。 右移前 1111 0000 右移后 1111 1100

表12.3位运算符的运算规贝 运算符 名称 运算规则 8 位与 两个相应位全1为1,其余为0 位或 两个相应位全0为0,其余为1 ∧ 位异或 两个相应位相同为0,其余为1 取反 把操作数各位0变1,1变0 左移 把操作数左移指定的位数 右移 把操作数右移指定的位数
表12.3 位运算符的运算规则 >> 右移 把操作数右移指定的位数 << 左移 把操作数左移指定的位数 ~ 取反 把操作数各位0变1,1变0 ∧ 位异或 两个相应位相同为0,其余为1 | 位或 两个相应位全0为0,其余为1 & 位与 两个相应位全1为1,其余为0 运算符 名称 运算规则

12.1.7位运算的复合赋值运算符 共有五种位运算的复合赋值运算符:&=(位 与赋值)、|(位或赋值)、A三(位异或赋值 )、>≡(按位右移赋值)、>=3相当于a=a>>3 x
12.1.7 位运算的复合赋值运算符 共有五种位运算的复合赋值运算符:&=(位 与赋值)、|=(位或赋值) 、∧= (位异或赋值 ) 、>>=(按位右移赋值)、>=3 相当于a= a>>3
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第十一章 结构体、公用体、枚举类型及其它.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第十章 指 针.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第九章 编译预处理.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第八章 函数.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第七章 数组.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第六章 循环控制.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第五章 选择结构程序设计.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第四章 最简单的C程序设计——顺序程序设计.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第三章 数据类型、运算符与表达式.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第二章 程序的灵魂——算法.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第一章 C语言概述.ppt
- 《C语言程序设计》课程电子教案:第八章 数组作为函数参数.doc
- 《C语言程序设计》课程电子教案:第八章 函数的嵌套调用和递归调用.doc
- 《C语言程序设计》课程电子教案:第八章 函数的定义、调用.doc
- 《C语言程序设计》课程电子教案:第七章 数组.doc
- 《C语言程序设计》课程电子教案:第七章 字符数组.doc
- 《C语言程序设计》课程电子教案:第七章 数组.doc
- 《C语言程序设计》课程电子教案:第六章 循环控制.doc
- 《C语言程序设计》课程电子教案:第六章 循环控制.doc
- 《C语言程序设计》课程电子教案:第五章 选择结构程序设计.doc
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第十三章 文件.ppt
- 《C语言程序设计》课程教学资源:习题2(第7-第10章).doc
- 《C语言程序设计》课程教学资源:习题1(第1-第6章).doc
- 《网页设计教程》PPT课件:第1章 网页制作初识.ppt
- 《网页设计教程》PPT课件:第10章 JavaScript和DHTML技术.ppt
- 《网页设计教程》PPT课件:第11章 示例网页利用ASP实现交互功能.ppt
- 《网页设计教程》PPT课件:第12章 利用ADO实现网页与数据库的链接.ppt
- 《网页设计教程》PPT课件:第2章 创建站点.ppt
- 《网页设计教程》PPT课件:第3章 网页文本的处理.ppt
- 《网页设计教程》PPT课件:第4章 网页表格的处理.ppt
- 《网页设计教程》PPT课件:第5章 网页框架的处理.ppt
- 《网页设计教程》PPT课件:第6章 网页图像处理.ppt
- 《网页设计教程》PPT课件:第7章 在网页中使用超链接.ppt
- 《网页设计教程》PPT课件:第8章 网页表单的处理.ppt
- 《网页设计教程》PPT课件:第9章 美化网页.ppt
- 中科院昆明动物研究所培训:曙光5000A超级计算机.ppt
- 曙光:机群应用开发(并行编程原理及程序设计)Parallel Programming - Fundamentals and Implementation(MPI并行程序设计 Parallel Programming with the Massage Passing Interface(MPI)).ppt
- 高性能计算机和曙光GHPC1000集群系统.ppt
- linux系统知识培训(PPT讲稿).pptx
- 《数字图像处理技术 Digital Image Processing》课程教学资源(教学大纲).pdf