网站大量收购独家精品文档,联系QQ:2885784924

第6讲_位运算符.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6讲_位运算符

嵌入式Linux系统开发技术 第6讲 位运算符 位运算符 运算符 描述 按位与 ( x y ) 如果两个操作数的相应位均为 1,则该位的结果值为 1 按位或 ( x | y ) 如果两个操作数的相应位有一个为 1,则该位的结果值为 1 按位取反 ( ~x ) 将操作数按位取反 (0 到 1 和 1 到 0) 按位异或 ( x^y ) 如果参加运算的两个操作数的相应位同号,则结果为 0,异号则为 1 左移 ( x2 ) 左端(高位)移出部分舍弃,右端(低位)补0 (左移一位乘以2) 右移 ( x2 ) 右端(低位)移出部分舍弃,左端(高位)根据符号位补0或者1,无符号或正数补0,负数补1 位运算符 位运算的对象 运算量只能是整型或字符型的数据,不能为实型数据。 位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字 按位与 的运算规则 如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。 示例 3&5 -3-5:补码:源码取反+1 按位与的使用 对一个存储单元清零,与进行0与运算。 取一个数中某些指定位: 如:取int a = 4321的低8位值,a FF 保留一位的方法:与一个数进行&运算,此数在该位1。 按位或与异或 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1。 用于将特定为置1; 按位异或 若参加运算的两个二进制位同号则结果为0(假)异号则结果为1(真) 用于使特定位翻转与交换两个值,不用临时变量 位运算符 操作数 位操作 位表达式 数字 10 15 1010 1111 1010 10 10 | 15 1010 | 1111 1111 15 10 ^ 15 1010 ^ 1111 0101 5 ~ 10 ~1010 0101 5 移位运算符 左移运算符(<<) 左移运算符是用来将一个数的各二进制位全部左移若干位。 高位左移后溢出,舍弃。 在存储位数内左移相当于左移一位为乘2;如果左移的位数等于或大于该类型的存储位数,则结果为0; 右移运算符() 右移运算符是将一个数的各二进制位全部右移若干位,移到右端的低位被舍弃,对无符号数,高位补0。 右移一位相当于除以2,右移n位相当于除以2n。 移位运算符 在右移时,需要注意符号位问题: 对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。移入0的称为“逻辑右移”,即简单右移;移入1的称为“算术右移”。 位运算的复合赋值运算符 位运算符与赋值运算符可以组成复合赋值运算符。 例如: =, |=, =, =, ∧= 例: a = b相当于 a = a b a =2相当于a = a 2 运算符的优先级 运算符 描述 结合性 (), ., -, [ ] 圆括号 自左向右 !, ++, --, sizeof 逻辑非,递增, 递减,求数据类型的大小 自右向左 *, /, % 乘法,除法,取余 自左向右 +, - 加法,减法 自左向右 , =, , = 小于,小于等于,大于,大于等于 自左向右 = =, != 等于,不等于 自左向右 逻辑与 自左向右 || 逻辑或 自左向右 =,+=, *=, /=, %= ,-= 赋值运算符,复合赋值运算符 自右向左 一般来说,算术运算符优先级高于比较运算符高于逻辑运算符高于赋值运算符 位运算的注意事项 优先级问题 (6 6) 4 的结果? 6 6 4 的结果?(优先级) 速度问题 a ^= b与 a = a ^ b那个更快? a 2 与 a = a/2/2; 要当心移位运算时发生范围溢出 位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或(异或一) k位清零 Num = ~(1k) K位置一 num | = (1k) 移位运算的应用 练习1:判断正整数num是奇数还是偶数? 练习2:取整型变量num的第k位(二进制表示中); 练习3:将整型变量num的第k位(二进制表示中)清零; (1)位运算符中除~以外,均为二目(元)运算符,即要求两侧各有一个运算量。 (2)运算量只能是整型或字符型的数据,不能为实型数据。 35的值得1 注意:如果参加运算的是负数(如-3-5),则要以补码形式表示为二进制数,然后再按位进行“与”运算。 交换两个值,不用临时变量:例如:a=3,b=4。 想将a和b的值互换,可以用以下赋值语句实现: a=a∧b; b=b∧a; a=a∧b; a=011 (∧)b=100 a

文档评论(0)

5500046 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档