巧妙运用位运算十进制转化为二进制输出,正数负数都适合
代码:
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int numb;
char *buff = (char*)malloc(10*sizeof(char));
int count = 0;
scanf("%d",&numb);
count = 0;
int index = 0;
do{
buff[count++] = numb&1;
numb = numb >> 1;
if(numb == 0){
break;
}
index ++;
}while(index < 32);
for(count--;count >= 0; count--){
printf("%d",buff[count]);
}
free(buff);
return 0;
}
输出结果
输入-2
-2
11111111111111111111111111111110
输入15
17
10001