位操作基础篇之位操作全面总结.pdfVIP

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

位操作基础篇之位操作全面总结 分类:C/C++/C#基础2012-03-19 09:34 41284 人阅读评论(127) 收藏举报 CC++位操作判断奇偶-交换两数-变换符号求绝对值-位操作压缩空间位操作趣味应用位操作笔试面试 目录(?)[+] Title: 位操作基础篇之位操作全面总结 Author: MoreWindows E-mail: morewindows@126.com KeyWord: C/C++ 位操作位操作技巧判断奇偶交换两数变换符号求绝对值位操作压缩空间 筛素数位操作趣味应用位操作笔试面试 位操作篇共分为基础篇和提高篇,基础篇主要对位操作进行全面总结,帮 助大家梳理知识。提高篇则针对各大IT 公司如微软、腾讯、百度、360 等公司的笔试面试题作详细的解答,使大家能熟练应对在笔试面试中位操 作题目。 下面就先来对位操作作个全面总结,欢迎大家补充。 在计算机中所有数据都是以二进制的形式储存的。位运算其实就是直接对 在内存中的二进制数据进行操作,因此处理数据的速度非常快。 在实际编程中,如果能巧妙运用位操作,完全可以达到四两拨千斤的效果, 正因为位操作的这些优点,所以位操作在各大IT 公司的笔试面试中一直 是个热点问题。因此本文将对位操作进行如下方面总结: 一.位操作基础,用一张表描述位操作符的应用规则并详细解释。 二.常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对 值。 三.位操作与空间压缩,针对筛素数进行空间压缩。 四.位操作的趣味应用,列举了位操作在高低位交换、二进制逆序、 二进制中1 的个数以及缺失的数字这4 种趣味应用。 希望读者能认真学习和亲自上机输入代码进行实验,相信通过本文及适当 的练习可以使你对位操作有更加深入的了解,在笔试面试中遇到位操作相 关试题能更加从容。 一.位操作基础 基本的位操作符有与、或、异或、取反、左移、右移这6 种,它们的运 算规则如下所示: 符号 描述 运算规则 by MoreWindows 与 两个位都为1 时,结果才为1 | 或 两个位都为0 时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0 变1,1 变0 左移 各二进位全部左移若干位,高位丢弃,低位补0 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号 数,各编译器处理方法不一样,有的补符号位(算术右移), 有的补0 (逻辑右移) 注意以下几点: 1. 在这6 种操作符,只有~取反是单目操作符,其它5 种都是双目操作 符。 2 . 位操作只能用于整形数据,对float 和double 类型进行位操作会被 编译器报错。 3. 对于移位操作,在微软的VC6.0 和VS2008 编译器都是采取算术称 位即算术移位操作,算术移位是相对于逻辑移位,它们在左移操作中都一 样,低位补0 即可,但在右移中逻辑移位的高位补0 而算术移位的高位 是补符号位。如下面代码会输出-4 和3。 [cpp] view plaincopy 1. int a = -15, b = 15; 2. printf(%d %d\n, a 2, b 2); 因为15=0000 1111(二进制),右移二位,最高位由符号位填充将得到 0000 0011 即3。-15 = 1111 0001(二进制),右移二位,最高位由符号位 填充将得到1111 1100 即-4 (见注1)。 4 . 位操作符的运算优先级比较低,因为尽量使用括号来确保运算顺序, 否则很可能会得到莫明其妙的结果。比如要得到像1,3,5,9 这些 2^i+1 的数字。写成int a = 1 i + 1;是不对的,程序会先执行i + 1,再 执行左移操作。应该写成int a = (1 i) + 1; 5. 另外位操作还有一些复合操作符,如=、|=、^=、=、=。 二.常用位操作小技巧 下面对位操作的一些常见应用作个总结,有判断奇偶、交换两数、变换符 号及求绝对值。这些小技巧应用易记,应当熟练掌握。 1.判断奇偶 只要根据最未位是0 还是1 来决定,为0 就是偶数,为1 就是奇数。因 此可以用if ((a 1) == 0)代

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档