haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 小学教育 > 学科竞赛学科竞赛

第6讲_位运算符

发布时间:2013-12-28 13:00:59  

嵌入式Linux系统开发技术

第6讲 位运算符

编者:方红芬

位运算符

?位运算的对象–运算量只能是整型或字符型的数据,不能为实型数据。–位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字

按位与

?&的运算规则–如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。?示例–3&5

–-3&-5:补码:源码取反

+1

按位与的使用

?对一个存储单元清零,与进行0与运算。?取一个数中某些指定位:

–如:取int a = 4321的低8位值,a & FF?保留一位的方法:与一个数进行&运算,此数在该位取1。

按位或与异或

?按位或

–两个相应的二进制位中只要有一个为1,该位的结果值为1。–用于将特定为置1;?按位异或

–若参加运算的两个二进制位同号则结果为0(假)异号则结果为1(真)–用于使特定位翻转与交换两个值,不用临时变量

移位运算符

?左移运算符(<<)

–左移运算符是用来将一个数的各二进制位全部左移若干位。

–高位左移后溢出,舍弃。

–在存储位数内左移相当于左移一位为乘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

位运算的注意事项?优先级问题

–(6 & 6) > 4 的结果?–6 & 6 > 4 的结果??速度问题

–a ^= b与 a = a ^ b那个更快? –a >> 2 与 a = a/2/2;

?要当心移位运算时发生范围溢出

位运算应用口诀

?清零取反要用与,某位置一可用或?若要取反和交换,轻轻松松用异或

移位运算的应用

?练习1:判断正整数num是奇数还是偶数??练习2:取整型变量num的第k位(二进制表示中);

?练习3:将整型变量num的第k位(二进制表示中)清零;

网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com