位运算小技巧总结(更新中 2020/4/24)

这篇博客汇总了位运算的各种实用技巧,包括交换数字、判断奇偶、位运算实现加减乘除、翻转二进制位、计数二进制1的数量,以及在输入输出和数值比较中的应用。随着时间的推移,作者不断更新了新的内容,如大小写字母转换、判断异号、优化除以十与乘以十的效率,还有快速的输入输出方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想到哪写到哪

交换两个数字

void swap(int & a, int & b){
    a ^= b;
    b ^= a;
    a ^= b;
}

判断奇偶

if(1 == (n & 1))    // 奇数
if(0 == (n & 1))    // 偶数

 

乘以二和除以二

n << 1 // 乘以二
n >> 1 // 除以二
n << x // 乘以二的x次方
n >> x // 除以二的x次方
n << 1 | 1 // 乘以二然后加一

 求最低位的1

#define lowbit(x) (x)&(-(x))

位运算实现加法

int add(int a, int b) {
	if (0 == b) {
		return a;
	}
	return add(a ^ b, (a & b) << 1);
}

位运算实现减法(从计算机组成原理里面学到的)

int sub(int a, int b) {
	return add(a, ~b + 1);
}

位运算实现乘法(快速幂的一个模板)

unsigned int mult(int a, int b) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值