这是今年CSP-J 2021初赛,阅读程序写结果的第一大题中涉及的一个位运算。

#include<bits/stdc++.h>
using namespace std;
void reverse(string &s){
    int i=0,j=s.size();
    while(i<j){
        swap(s[i],s[j]);
        ++i;--j;
    }
}
string dec2bin(int dec){
    string s;char c[100];
    int i=0;
    while(dec){
        c[i]=dec%2+'0';
        ++i;
        dec/=2;
    }
    s=c;
    reverse(s);
    return s;
}
int main(){
    int i;
    cin>>i;
    cout<<dec2bin(i)<<endl;
    cout<<dec2bin(i&i-1)<<endl;
}

由上面代码可以得出,i&i-1用来去掉二进制中最后一个1。

相关文章:

  • 2022-12-23
  • 2021-12-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2019-01-07
  • 2021-09-10
  • 2022-12-23
猜你喜欢
  • 2021-05-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-14
  • 2022-01-13
  • 2022-12-23
相关资源
相似解决方案