#include <stdio.h>
char * itbs(int n,char * ps);
void show_bstr(char * str);
int inver_end(int number,int bits);
void main(){
char bin_str[8*sizeof(int)+1];
int number;
while((scanf("%d",&number))==1){
itbs(number,bin_str);
show_bstr(bin_str);
putchar('\n');
number=inver_end(number,4);
show_bstr(itbs(number,bin_str));
}
}
char * itbs(int n,char * ps){
int i;
static int size=8*sizeof(int);
for(i=size-1;i>=0;i--,n>>=1){
ps[i]=(01&n)+'0';//掩码,加上'0'的ASCII码编码可以完成该转换
}
ps[size]='\0';
return ps;
}
void show_bstr(char * str){
int i=0;
while(str[i]){
putchar(str[i]);
if(++i%4==0&&str[i])
putchar(' ');
}
}
//指定位反转
int inver_end(int number,int bits){
int mask=0;
int bitval=1;
while(bits-->0){
mask|=bitval;
bitval<<=1;
}
return number^mask;
}
结果: