- C24yechenxi's blog
bitset与编码
- @ 2025-12-12 19:31:53
< bitset >
补码
补码,原码取反加1.
在补码中:

为何用补码?——可直接用加法。
2的幂运用:
计算 : n << m;
计算 : n >> m;
\
二进制应用
将二进制某一位设为0:a & ~(1 << b)
将二进制某一位设为1:a | (1 << b)
algorithm
lowbit(x) = x & (-x)
求 x 的最低位1所代表的数值(或位置):Lowbit算法
求数值:lowbit(x) = x&(-x)
x的补码-x,在最低位1及其之前的所有位都是互补的,即最低位1左边的位都被翻转,右边的位本身就是0,所以&后仅保留最低位的1。
求位置:循环右移计数直到归零。\
汉字编码
汉字编码\
//C25zhangchengjun发明的汉字伪加密
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
string s;
int main(){
while(cin >> s){if(s.size()%2==1)s=s+' ';
for(int i = 0; i < s.size(); i+=2){
swap(s[i],s[i+1]);
}
cout << s << endl;}
return 0;
}