十进制到二进制转换器不能计算大于1023的小数

时间:2014-09-14 19:32:29

标签: c binary decimal bit-manipulation

我正在编写一个将十进制转换为二进制的函数。它适用于小于1024的值,但我需要它也适用于8位数字。到目前为止我的功能:

static long int decToBin(int dec)
{
  int bit;
  int k;
  long int bin = 0;

  for (bit = 32; bit >= 0; bit--)
  {
    k = dec >> bit;

    if (k & 1)
    {
       bin += exponentiate(10, bit);
    }
  }

  return bin;
}

我对按位的东西比较新,所以问题可能很明显,但我很感激任何帮助。

编辑:我是用C语言编写的,使用GNU GCC编译器。

1 个答案:

答案 0 :(得分:0)

供参考

static void decToBin(int dec)
{
  int bit;
  int k;

  for (bit = 31; bit; bit--)
  {
    k = (unsigned int)dec >> bit;
    printf("%d", (k&1)?1:0);
  }
  k = (unsigned int)dec >> bit;
  printf("%d\n", (k&1)?1:0);
  return;
}

一旦你理解了这是做什么的,你就可以实现自己的。提示:您可能需要分配存储空间(32个字节)。