IdeaOctober 20, 2025

C++ 的一些奇淫技巧[WIP]

在该文章中,我们将讨论一些 C++ 的有趣小技巧。

Ideaalgorithmc++cpp-tricks

1. 使用位运算来判断奇偶数

我们常用 a%2==0 来进行奇偶数判断。但众所周知,C++的 取模运算 的时间复杂度会远远大于 位运算

因此,我们可以改用如下代码片段来进行奇偶判断

示例代码
#include...
using namespace std;
int main(){
	string num; //对于位数很大的数进行奇偶判断
	cin >> num;
	cout << ((num.back() - '0') & 1) << endl; //只取最后一位进行判断
}
原理
 
a=5		bin(a)= 0101		a&1= 0001	(int)=1
b=6		bin(b)= 0110		b&1= 0000	(int)=0
		bin(1)= 0001		*即当二进制数位上同为 1 时才为 1

据此,我们可以更高效的判断奇偶数

2. 使用位运算来判断是否为2的n次幂

在C++中判断一个数是否为 2的n次幂 ,你的想法是循环循环除以2直到完全除尽?

事实上,我们也可以使用 位运算 来判断一个数是否为2的n次幂。

示例代码
#include...
using namespace std;
int main(){
	int num;
	cin >> num;
	cout << (num & (num - 1) ? "No" : "Yes") << endl;
}
原理
*1 中解释,二进制数位上同为 1 时才为 1
a=8   bin(8)= 1000   bin(8-1)= 0111	    8&8-1= 0000 (int)=0
b=10  bin(10)= 1010  bin(10-1)= 1001	10&10-1= 1000 (int)=8 != 0
所以当 num&(num-1) 为 0 时,该数是 2 的 n 次幂

Last updated on

On this page