chapter12 位运算.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chapter12 位运算

2000年1月25日 北京理工大学 / 北京航空航天大学 交通科学与工程学院 徐国艳 本章内容 §12.1 位及位运算的概念 §12.2 位运算符 §12.3 位运算举例 位运算:二进制位的运算。 在内存中每一个字节有一个地址。 一个字节由8位二进制位组成。 位操作是直接对二进制位进行的,位运算只适用于无符号整型变量。 §12.2 位运算符 C语言提供如下位运算符。其中除运算符~以外。都是二目运算符。 运算符 语义 按位与 | 按位或 ∧ 按位异或 ~ 按位取反 左移 右移 参加运算的两个运算量,如果对应二进制位都是1,则该位的结果为1,否则该位是0。 例:用按位与操作实现宏is_odd,判断某个整 数是否为奇数: #define is_odd(x) (1(unsigned)(x)) 也可以用按位与运算屏蔽掉某些二进制位,如: c=n 0177  参与运算的两个运算量,如果对应二进制位都是0,则该位的结果值为0,否则该位的结果值是1。 按位或运算用来对一个数据的某些二进制位置1。 例如:x|MASK 的运算结果是将x中相应于MASK为1的那些位置1。 按位异或运算是使参与运算的两个量,如果对应二进制位不同,则该位结果是1,否则该位的结果是0。 按位异或操作可以用来检查两个字是否相同。 例如: if(x∧y) … /* x和y不同*/ ~是单目运算符,用来对一个二进制数按位取反,即将0变为1,将1变成0。 这个操作可用于某些依赖于具体计算机字长的应用中,从而使结果代码是可移植的。 例如:用来将字x的低3位清零:x=x0xfff8; 但这个操作只能应用于16位字长的计算机。如果计算机的字长为32位,结果将会有所不同。 一个可移植的方法是:x=x|~0x7; 这种表达方式与机器字长无关,也无需额外开销,因为~0x7是个常量表达式,所以是在编译时求值的。 xn:把x的每个二进制位左移n位,丢掉最左边的n位,右侧补0。 左移1位相当于该数乘以2。左移位比乘法运算快得多。 7.位运算符与赋值运算符结合可以组成复合的赋值运算符,这样的运算符有:=,|=,=,=和∧= a=b相当于a=ab a|=b相当于a=a|b a=b相当于a=ab a=b相当于a=ab a∧=b相当于a=a∧b 如果两个数据长度不同,则在进行位运算时系统会将二者自动按右端对齐。 例如:ab,这里a是long型,b为int型, 如果长度短的数是正数,则左侧用0补满。 如果长度短的数是负数,则左侧用1补满。 在进行运算时,建议采用无符号整数,尽量不用带符号的数。 §12.3 位运算举例 [例12.1]取一个整数从右端开始的4~7位 ② 设置一个低4位全为1,其余全为0的数。可用下面方法实现: ~ ( ~ 0 4 ) ③ 将上面二者进行运算。即 (a 4) ~ ( ~ 0 4 ) 与低4位为1的数进行运算,就能将这4位保留下来。 #include stdio.h void main( ) { unsigned a, b, c, d; scanf(%o“,a); b=a>>4; c=~(~0<<4); d=bc; printf(“%o, %d\n%o, %d\n,a,a,d,d); } 如要实现从右面第m位开始取其右面n位,如何修改程序? 作业 P329 12.2 12.4 * * 北京理工大学 / C 语言程序设计 第12章 位运算 0 1 1 1 1 1 0 1 最低位 最高位 §12.1 位及位运算的概念 1.按位“与”运算符 2.按位“或”运算符 3.按位“异或”运算符∧ 4 按位“取反”运算符~ 5.左移运算符  xn:把x的每一个二进制位右移n位,丢掉最右边的n位,最左边的n位补0。 右移一位相当于将该数除以2。 6.右移运算符 8.不同长度的数据进行位运算 ① 先使a右移4位。(a)图是未右移时的情况,(b)图是右移4位后的情况。目的是使要取出的那几位移到最右端。 右移到右端可以用下面方法实现: a 4 ~0的全部二进制为全1,左移4位,这样右端低4位为0。见下面所示:

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档