chapter12 位运算

上传人:m**** 文档编号:576713599 上传时间:2024-08-20 格式:PPT 页数:18 大小:208KB
返回 下载 相关 举报
chapter12 位运算_第1页
第1页 / 共18页
chapter12 位运算_第2页
第2页 / 共18页
chapter12 位运算_第3页
第3页 / 共18页
chapter12 位运算_第4页
第4页 / 共18页
chapter12 位运算_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《chapter12 位运算》由会员分享,可在线阅读,更多相关《chapter12 位运算(18页珍藏版)》请在金锄头文库上搜索。

1、C C 语言程序设计语言程序设计第第1212章章 位运算位运算北京航空航天大学北京航空航天大学 交通科学与工程学院交通科学与工程学院徐国艳徐国艳1本章内容本章内容l l12.1 12.1 12.1 12.1 位及位运算的概念位及位运算的概念位及位运算的概念位及位运算的概念l l12.2 12.2 12.2 12.2 位运算符位运算符位运算符位运算符l l12.3 12.3 12.3 12.3 位运算举例位运算举例位运算举例位运算举例2024/8/202l l位运算:二进制位的运算。位运算:二进制位的运算。l l在内存中每一个字节有一个地址。在内存中每一个字节有一个地址。l l一个字节由一个字节

2、由8 8位二进制位组成。位二进制位组成。l l位操作是直接对二进制位进行的,位运算只适用于位操作是直接对二进制位进行的,位运算只适用于无符号整型变量无符号整型变量。 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 12.1 位及位运算的概念2024/8/20312.12.2 2 位运算符位运算符l lC C语言提供如下位运算符。其中除运算符语言提供如下位运算符。其中除运算符 以外。以外。都是二目运算符。都是二目运算符。 运算符运算符 语义语义 & & 按位与按位与 按位或按位或 按位异或按位异或 按位取反按位取反 右移右移2024/8/204参加运算的两个运算量,如果对应二进制

3、位都是参加运算的两个运算量,如果对应二进制位都是参加运算的两个运算量,如果对应二进制位都是参加运算的两个运算量,如果对应二进制位都是1 1 1 1,则该位的结果为,则该位的结果为,则该位的结果为,则该位的结果为1 1 1 1,否则该位是,否则该位是,否则该位是,否则该位是0 0 0 0。l l例例例例: : : :用按位与操作实现宏用按位与操作实现宏用按位与操作实现宏用按位与操作实现宏is_oddis_oddis_oddis_odd,判断某个整判断某个整判断某个整判断某个整 数是否为奇数数是否为奇数数是否为奇数数是否为奇数: : : : # # # #define is_odd(x) (1&(

4、unsigned)(x)define is_odd(x) (1&(unsigned)(x)define is_odd(x) (1&(unsigned)(x)define is_odd(x) (1&(unsigned)(x)l l也可以用按位与运算也可以用按位与运算也可以用按位与运算也可以用按位与运算屏蔽屏蔽屏蔽屏蔽掉某些二进制位,如掉某些二进制位,如掉某些二进制位,如掉某些二进制位,如: : : : c=n & 0177c=n & 0177c=n & 0177c=n & 01771.按位“与”运算符 &2024/8/205 参与运算的两个运算量,如果对应二进制位都是参与运算的两个运算量,如果对

5、应二进制位都是参与运算的两个运算量,如果对应二进制位都是参与运算的两个运算量,如果对应二进制位都是0 0 0 0,则该位的结果值为,则该位的结果值为,则该位的结果值为,则该位的结果值为0 0 0 0,否则该位的结果值是,否则该位的结果值是,否则该位的结果值是,否则该位的结果值是1 1 1 1。l l 按位或运算用来对一个数据的某些二进制位置按位或运算用来对一个数据的某些二进制位置按位或运算用来对一个数据的某些二进制位置按位或运算用来对一个数据的某些二进制位置1 1 1 1。 例如例如例如例如: : : :x|MASKx|MASKx|MASKx|MASK的运算结果是将的运算结果是将的运算结果是将

6、的运算结果是将x x x x中相应于中相应于中相应于中相应于MASKMASKMASKMASK为为为为1 1 1 1的那些位置的那些位置的那些位置的那些位置1 1 1 1。2.2.按位按位“或或”运算符运算符2024/8/206l l按位异或运算是使参与运算的两个量,如果对应二进制位不同,则该位结果是1,否则该位的结果是0。l l按位异或操作可以用来检查两个字是否相同。l l例如:if(xy) /* x和y不同*/3.按位“异或”运算符2024/8/207l l 是单目运算符,用来对一个二进制数按位取反,是单目运算符,用来对一个二进制数按位取反,是单目运算符,用来对一个二进制数按位取反,是单目运

7、算符,用来对一个二进制数按位取反,即将即将即将即将0 0 0 0变为变为变为变为1 1 1 1,将,将,将,将1 1 1 1变成变成变成变成0 0 0 0。l l这个操作可用于某些依赖于具体计算机字长的这个操作可用于某些依赖于具体计算机字长的这个操作可用于某些依赖于具体计算机字长的这个操作可用于某些依赖于具体计算机字长的应用中,从而使结果代码是可移植的。应用中,从而使结果代码是可移植的。应用中,从而使结果代码是可移植的。应用中,从而使结果代码是可移植的。l l例如例如例如例如: : : :用来将字用来将字用来将字用来将字x x x x的低的低的低的低3 3 3 3位清零位清零位清零位清零: :

8、 : :x=x&0xfff8;x=x&0xfff8;x=x&0xfff8;x=x&0xfff8;l l但这个操作只能应用于但这个操作只能应用于但这个操作只能应用于但这个操作只能应用于16161616位字长的计算机。如位字长的计算机。如位字长的计算机。如位字长的计算机。如果计算机的字长为果计算机的字长为果计算机的字长为果计算机的字长为32323232位,结果将会有所不同。位,结果将会有所不同。位,结果将会有所不同。位,结果将会有所不同。l l一个可移植的方法是一个可移植的方法是一个可移植的方法是一个可移植的方法是: : : :x=x|0x7;x=x|0x7;x=x|0x7;x=x|0x7; 这种

9、表达方式与机器字长无关,也无需额外开这种表达方式与机器字长无关,也无需额外开这种表达方式与机器字长无关,也无需额外开这种表达方式与机器字长无关,也无需额外开销,因为销,因为销,因为销,因为0 0 0 0x7x7x7x7是个常量表达式,所以是在编译是个常量表达式,所以是在编译是个常量表达式,所以是在编译是个常量表达式,所以是在编译时求值的。时求值的。时求值的。时求值的。4 按位“取反”运算符2024/8/208 xn:xn:xn:xn:把把把把x x x x的每个二进制位左移的每个二进制位左移的每个二进制位左移的每个二进制位左移n n n n位,位,位,位,丢掉最左边丢掉最左边丢掉最左边丢掉最左

10、边的的的的n n n n位,右侧补位,右侧补位,右侧补位,右侧补0 0 0 0。l l左移左移左移左移1 1 1 1位相当于该数乘以位相当于该数乘以位相当于该数乘以位相当于该数乘以2 2 2 2。左移位比乘法运算。左移位比乘法运算。左移位比乘法运算。左移位比乘法运算快得多。快得多。快得多。快得多。5.左移运算符n:xn:把把x x的每一个二进制位右移的每一个二进制位右移n n位,位,丢掉最右边的丢掉最右边的n n位,最左边的位,最左边的n n位补位补0 0。l l右移一位相当于将该数除以右移一位相当于将该数除以2 2。6.6.右移运算符右移运算符2024/8/20107.位运算符与赋值运算符结

11、合可以组成复合的赋值运算符,这样的运算符有:&=,|=,=,=b相当于a=abn na=b相当于a=a 42024/8/2013l l 设置一个低设置一个低4位全为位全为1,其余全为其余全为0的数。的数。可用下面方法实现可用下面方法实现: ( 0 4 )0的全部二进制为全的全部二进制为全1,左移,左移4位,位,这样右端低这样右端低4位为位为0。见下面所示:。见下面所示: 0:0000000000 0: 1111111111 04:1111110000 (0 4) & ( 0 4 ) 与低与低4位为位为1的数进行的数进行&运算,就能将运算,就能将这这4位保留下来。位保留下来。2024/8/201

12、5#include #include void main(void main() ) unsigned a, b, c, d; unsigned a, b, c, d; scanf(%o“,&ascanf(%o“,&a) ); b=ab=a4;4; c=c=( (0 04);4); d=d=b&cb&c; ; printf(“%oprintf(“%o, %, %dn%odn%o, %dndn ,a,a,d,da,a,d,d) ); 2024/8/2016如要实现从右面第如要实现从右面第m位开始取其右面位开始取其右面n位,如何修改程序?位,如何修改程序?只需将程序中的只需将程序中的“b=a4”改成改成“b=a(m-n+1)”以及将以及将“c=(04)”改成改成“c=(0n)”即可。即可。2024/8/2017作业作业l lP329 12.2 12.42024/8/2018

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号