主要用到按位运算的性质,以及二进制补码的性质;
输入n: 26->11010;
则 -n的二进制补码为: -26->00110;
则 26 & -26 ->00010->2;
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cmath> #include<string> #include<iomanip> using namespace std; const int MAX = 10010; int main() { int n; while(cin>>n && n) printf("%d\n",n&(-n)); return 0; }