C语言之面试题(四)

把十进制数用二进制的方式和16进制的方式输出。

long型为4字节,32位。每4个二位为1个16进制,因此每次都对4位进行分析

char* 16_output(long num)
{
  int i=0;
  char* temp=(char*)malloc(11);
  temp[0]='0';
  temp[1]='X';
  temp[10]='\0';
  for(;i<8;i++)
{
  temp[i]=char((num<<4*i<<28)); //每次取4位
  temp[i]=temp[i]>0?temp[i]:tempp[i]+16;//考虑符号,小于0就加16,这样数字在0-15之间
  temp[i]=temp[i]<10?temp[i]+48:temp[i]+55;//如果小于10就是 0-9。大于10,就是字母了。
}
return temp;
  
}
bit 2_output(long num)
{
   char* temp=(char *)malloc(33);
   temp[32]='\0';   
   int i=0;
   for(;i<32;i++)
   {  
     temp[i]=char(((num>>(31-i))&1);)
   }

}

猜你喜欢

转载自blog.csdn.net/weixin_40288381/article/details/81155975