位运算技巧总结.docxVIP

位运算技巧总结.docx

本文档由用户AI专业辅助创建,并经网站质量审核通过
  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文档。上传文档
查看更多

位运算技巧总结

一、位运算基础概述

位运算是指对二进制数的位进行操作的运算,主要包括与()、或(|)、异或(^)、非(~)、左移()、右移()等。位运算具有高效、简洁的特点,常用于算法优化、数据加密、位图处理等领域。

(一)基本运算定义

1.与运算():两数按位与,若对应位都为1,则结果为1,否则为0。

示例:53→5(二进制101)3(二进制011)→1(二进制001)

2.或运算(|):两数按位或,若对应位至少有一个为1,则结果为1,否则为0。

礅例:5|3→5(二进制101)|3(二进制011)→7(二进制111)

3.异或运算(^):两数按位异或,若对应位不同,则结果为1,否则为0。

示例:5^3→5(二进制101)^3(二进制011)→6(二进制110)

4.非运算(~):单数按位取反,即0变1,1变0。注意:非运算是单目运算。

示例:~5→5(二进制101)取反→-6(补码表示)

5.左移运算():将二进制位向左移动指定位数,右补0。

示例:51→5(二进制101)左移1位→10(二进制1010)

6.右移运算():将二进制位向右移动指定位数,符号位右补。

示例:51→5(二进制101)右移1位→2(二进制10)

(二)位运算性质

1.交换律:ab=ba;a|b=b|a

2.结合律:(ab)c=a(bc);(a|b)|c=a|(b|c)

3.分配律:a(b|c)=(ab)|(ac);a|(bc)=(a|b)(a|c)

4.零律:a0=0;a|1=a

5.自反律:aa=a;a|a=a

6.异或律:a^a=0;a^0=a;a^b^a=b

二、位运算常用技巧

(一)快速判断奇偶性

1.奇数:最低位为1,a1=1

2.偶数:最低位为0,a1=0

(二)翻转指定位

1.翻转第k位:a^(1k)

示例:翻转5(101)的第2位→5^(12)=5^4=1(二进制001)

(三)设置指定位

1.设置第k位为1:a|(1k)

示例:设置3(011)的第1位为1→3|(11)=3|2=7(二进制111)

(四)清除指定位

1.清除第k位(保留低k位):a~(1k)

示例:清除4(100)的第2位→4~(12)=43=0(二进制000)

(五)提取指定位

1.提取第k位:((ak)1)

示例:提取5(101)的第2位→(52)1=11=1

(六)位运算优化

1.检查整数是否为2的幂:a(a-1)==0(仅当a为2^n时成立)

示例:8(1000)7(0111)=0,成立

2.计算整数二进制中1的个数(BrianKernighan算法):

```

count=0

whilea:

a=a-1

count+=1

```

示例:5(101)→54=4(100);43=0,count=2

三、位运算实际应用

(一)数据压缩与加密

1.位运算可用于高效存储数据,如用1位表示布尔值。

2.简单加密示例:a^key(异或密钥)解密需相同操作。

(二)算法优化

1.位运算常用于快速求和、查找等操作,如Fenwick树(二叉索引树)利用位运算实现。

2.示例:快速计算n的平方根(近似)可结合位运算分步处理。

(三)硬件交互

1.位运算用于配置寄存器,如设置GPIO引脚状态。

2.示例:a|=(13)表示点亮第3号LED。

四、总结

位运算通过直接操作二进制位实现高效计算,需熟练掌握基本运算与常用技巧。结合实际场景可显著提升代码性能与可读性。建议通过练习题巩固理解,如leetcode中的位运算题目。

二、位运算常用技巧(续)

(一)快速判断奇偶性(续)

1.奇数:整数的最低位(LeastSignificantBit,LSB)为1时,该数为奇数。可通过与1进行按位与()操作快速判断。如果结果为1,则该数是奇数;如果结果为0,则该数是偶数。

原理:任何奇数在二进制表示中最低位一定是1,而偶数的最低位一定是0。因此,`a1`的结果直接反映了最低位的值。

示例:

判断5是否为奇数:5的二进制为`101`。计算`51`,即`1011`,结果为`1`。因此,5是奇数。

判断8是否为奇数:8的二进制为

文档评论(0)

逆着海风的雄鹰 + 关注
实名认证
文档贡献者

如有侵权,联系立删,生活不易。

1亿VIP精品文档

相关文档