シフト演算を使う場合 その1。頭に0がたくさんつくのは手抜き。
#include <stdio.h>
void dec2bin(unsigned int val, char *str)
{
const unsigned int mask = 0x80000000;
int i;
for( i = 0; i < 32; i++)
str[i] = val & (mask >> i)?'1':'0';
str[32] = '\0';
}
int main(int argc, char** argv)
{
int val;
char str[33];
printf("Please input integer>");
scanf("%d", &val);
dec2bin( (unsigned int)val, str);
printf("%s\n", str);
}