将任一整数转换为二进制形式。
要求实现函数:
void DecToBin (int iDec, char pBin[32])
输入:iDec需要转换的十进制整数
输出:pBin 转换为二进制后的字符串,高位在左边,不足32位补0示例
输入:123输出:{"00000000000000000000000001111011"}
#include<stdio.h>
#include<math.h>
int fun(int num){
int cnt = 0;
while(num>0){
num/=2;
cnt++;
}
return cnt;
}
void DecToBin(int iDec,char pBin[]){
int n,t,k=0;t=iDec;
n=k=fun(t);
for(int i=0;i<n;i++)
pBin[i]=0;
pBin[n-k]=1;
t-=pow(2,k-1);
while(t>1){
k=fun(t);
pBin[n-k]=1;
t-=pow(2,k-1);
}
if(t==1)
pBin[n-1]=1;
for(int i=0;i<32-n;i++)
printf("0");
for(int i=0;i<n;i++)
printf("%d",pBin[i]);
//printf("%032s",pBin);不清楚这样为什么会乱码
}
int main(){
int dec;
scanf("%d",&dec);
char bin[32];
DecToBin(dec,bin);
}