位运算相关
六种位运算符
- & 按位与
- | 按位或
- ^ 按位异或
- ~ 取反
- << 左移
- >> 右移
常见位运算操作
1、字母大小写转换
- 统一转成大写:ch & 0b11011111 简写:ch & 0xDF
- 统一转成小写:ch | 0b00100000 简写:ch | 0x20
比较的时候注意加上小括号哦,因为位运算优先级比较低。
2、判断奇偶性
- i & 1
- 1 为奇数
- 0 为偶数
3、交换变量
a^=b; b^=a; a^=b;
第一步没啥好说a = a^b
第二步:b=b^a,也就是b=b^a^b,也就是b=a^0,此处换值
第三步:a=a^b 也就是a=a^b^a,也就是b
4、取int型变量a的第k位
a>>k&1
其中,k=0,1,2……sizeof(int),这里的位数指的是二进制数位,从低到高,从右到左
1 >>> bin(22) 2 '0b10110' 3 >>> 22>>3&1 4 0 5 >>> 22>>2&1 6 1
5、将int型变量a的第k位清0
- a=a&~(1<<k)
1 >>> bin(22) 2 '0b10110' 3 >>> a = 22 4 >>> a = a&~(1<<2) 5 >>> bin(a) 6 '0b10010'
6、将int型变量a的第k位置1
a=a|(1<<k)
1 >>> bin(22) 2 '0b10110' 3 >>> a = 22 4 >>> a = a|(1<<3) 5 >>> bin(a) 6 '0b11110'
7、判断一个整数是不是2的幂,对于一个数 x >= 0,判断他是不是2的幂
1 def power2(x) 2 return ((x&(x-1))==0) and (x!=0);
8、取模运算转化成位运算 (在不产生溢出的情况下)
- a % (2^n) 等价于 a & (2^n - 1)
- a % 2 等价于 a & 1 ( a & log2(2))
- a % 4 等价于 a & 2 ( a & log2(4))
- .....
- a % 32 等价于 a & 5
9、乘法运算转化成位运算 (在不产生溢出的情况下)
- a * (2^n) 等价于 a<< n
10、除法运算转化成位运算 (在不产生溢出的情况下)
- a / (2^n) 等价于 a>> n
例: 12/8 == 12>>3
11、
if (x == a) x= b;
else x= a;
- 等价于 x= a ^ b ^ x;
12、x 的 相反数
- 表示为 (~x+1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)