【基础算法】位运算之lowbit操作
lowbit作用:快速找到一个数中二进制的最后一个1以及后面所有0的组合
lowbit核心:一个数的原码 & 补码(即该数的负数)
举个例子:
原码 = 101010101000000
补
机械计算机指的是电子计算机诞生之前的计算机械吧。
然后就是,您说的补码是自然现象,我不太理解。
假设二进制数最大取到第三位,那么2 = 010,取反后就是101,再加1就是110
所以2的补码是110,也是-2的原码。
另外,由于进位发生变化的是符号位。
下面是求2的补码(即-2的原码)代码
#include <iostream>
using namespace std;
int main()
{
int n = 2;
n = ~n + 1;
cout << n << endl;
for(int i=2; i>=0; i--)
{
if(n >> i & 1) cout << 1;
else cout << 0;
}
puts("");
return 0;
}
运行结果是
-2
110