chapter12 位运算

chapter12 位运算

ID:19787300

大小:208.00 KB

页数:18页

时间:2018-10-06

chapter12 位运算_第1页
chapter12 位运算_第2页
chapter12 位运算_第3页
chapter12 位运算_第4页
chapter12 位运算_第5页
资源描述:

《chapter12 位运算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计第12章位运算北京航空航天大学交通科学与工程学院徐国艳1本章内容§12.1位及位运算的概念§12.2位运算符§12.3位运算举例2021/9/72位运算:二进制位的运算。在内存中每一个字节有一个地址。一个字节由8位二进制位组成。位操作是直接对二进制位进行的,位运算只适用于无符号整型变量。01111101最低位最高位§12.1位及位运算的概念2021/9/73§12.2位运算符C语言提供如下位运算符。其中除运算符~以外。都是二目运算符。运算符语义&按位与|按位或∧按位异或~按位取反<<左移>>右移2021/9/74参加运算的两个运算量

2、,如果对应二进制位都是1,则该位的结果为1,否则该位是0。例:用按位与操作实现宏is_odd,判断某个整数是否为奇数:#defineis_odd(x)(1&(unsigned)(x))也可以用按位与运算屏蔽掉某些二进制位,如:c=n&01771.按位“与”运算符&2021/9/75参与运算的两个运算量,如果对应二进制位都是0,则该位的结果值为0,否则该位的结果值是1。按位或运算用来对一个数据的某些二进制位置1。例如:x

3、MASK的运算结果是将x中相应于MASK为1的那些位置1。2.按位“或”运算符2021/9/76按位异或运算是使参与运算的两个量

4、,如果对应二进制位不同,则该位结果是1,否则该位的结果是0。按位异或操作可以用来检查两个字是否相同。例如:if(x∧y)…/*x和y不同*/3.按位“异或”运算符∧2021/9/77~是单目运算符,用来对一个二进制数按位取反,即将0变为1,将1变成0。这个操作可用于某些依赖于具体计算机字长的应用中,从而使结果代码是可移植的。例如:用来将字x的低3位清零:x=x&0xfff8;但这个操作只能应用于16位字长的计算机。如果计算机的字长为32位,结果将会有所不同。一个可移植的方法是:x=x

5、~0x7;这种表达方式与机器字长无关,也无需额外开销,因为~0x7

6、是个常量表达式,所以是在编译时求值的。4按位“取反”运算符~2021/9/78x<>n:把x的每一个二进制位右移n位,丢掉最右边的n位,最左边的n位补0。右移一位相当于将该数除以2。6.右移运算符>>2021/9/7107.位运算符与赋值运算符结合可以组成复合的赋值运算符,这样的运算符有:&=,

7、=,>>=,<<=和∧=a&=b相当于a=a&ba

8、=b相当于a=a

9、ba>>=b相当于a=a>>b

10、a<<=b相当于a=a<

11、方法实现:a>>42021/9/713②设置一个低4位全为1,其余全为0的数。可用下面方法实现:~(~0<<4)~0的全部二进制为全1,左移4位,这样右端低4位为0。见下面所示:0:0000…000000~0:1111…111111~0<<4:1111…110000~(~0<<4):0000…0011112021/9/714③将上面二者进行&运算。即(a>>4)&~(~0<<4)与低4位为1的数进行&运算,就能将这4位保留下来。2021/9/715#includevoidmain(){unsigneda,b,c,d;scanf("%

12、o“,&a);b=a>>4;c=~(~0<<4);d=b&c;printf(“%o,%d%o,%d",a,a,d,d);}2021/9/716如要实现从右面第m位开始取其右面n位,如何修改程序?只需将程序中的“b=a>>4”改成“b=a>>(m-n+1)”以及将“c=~(~0<<4)”改成“c=~(~0<<n)”即可。2021/9/717作业P32912.212.42021/9/718

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。