输出二进制表示 (蓝桥杯算法提高)
题意:对n∈[-128,127]输出其二进制形式
思路1:分正负数数讨论模拟二进制(复杂代码)
思路2:按位与判断(简洁代码)
思路1代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,f,ans,i;
while(cin>>n){
i=f=ans=0;
int num[10]={};
char a[10]="";
if(n<0) n=-n,f=1;
while(n) a[i++]=n%2,n/=2;
for(int i=7;i>=0;i--) ans=ans*10+a[i];
sprintf(a,"%08d",ans);
if(f){ a[0]='1';
for(int i=1;i<8;i++) a[i]=='0'?a[i]='1':a[i]='0';
for(int i=7,p=1;i>0;i--)
if(p)
if(a[i]=='0') a[i]='1',p=0;
else a[i]='0';
}
cout<<a<<endl;
}
}
思路2代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
for(int i=7,j=1<<7;i>=0;i--,j=1<<i)
printf(j&n?"1":"0");
puts("");
}
return 0;
}