求解二进制的第/k位数,注意二进制是从0开始计数
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int k=0;
cout<<(n>>k&1);
return 0;
}`
求解二进制数中有几个1
解法一:
int lowbit(int x){
return x&(-x);
}
int main(){
int x;
cin>>x;
int res=0;
while(x){
x=x-lowbit(x);
res++;
}
cout<<res;
return 0;
}
解法二:
int main(){
int x;
cin>>x;
int k=0;
while(x){
k+=x&1;
x=x>>1;
}
cout<<k;
return 0;
}
十进制转化为二进制:
方法一:
#include<stack>
int main(){
int x;
cin>>x;
stack<int>q;
int k=0;
while(x){
q.push(x%2);
x=x/2;
k++;
}
int top=0;
while(!q.empty()){
cout<<q.top()<<' ';
q.pop();
}
cout<<k<<endl;
return 0;
}
方法二:
#include<stack>
int main(){
int x;
stack<int>q;
cin>>x;
while(x){
q.push(x&1);
x=x>>1;
}
while(!q.empty()){
cout<<q.top()<<' ';
q.pop();
}
return 0;
}