c - 十进制转二进制

标签 c binary bit-manipulation decimal bitwise-operators

我有一个数字,我想用 C 语言将其转换为二进制(从十进制)。

我希望我的二进制始终为 5 位(十进制永远不会超过 31)。我已经有一个函数可以通过除法手动完成,但是很难将其填充到 5 位。

有没有更简单的方法?也许使用位移位?

我还希望用 char *

表示二进制文件

最佳答案

这是一个优雅的解决方案:

void getBin(int num, char *str)
{
  *(str+5) = '\0';
  int mask = 0x10 << 1;
  while(mask >>= 1)
    *str++ = !!(mask & num) + '0';
}

在这里,我们首先确保字符串以空字符结尾。然后,我们创建一个包含单个掩码的掩码(它是您所期望的掩码,向左移动一次以说明 while 条件的第一次运行中的移动)。每次循环,掩码都向右移动一位,然后将相应的字符设置为“1”或“0”(!! 确保我们添加0 或 1 到 '0')。最后,当掩码中的 1 移出数字时,while 循环结束。

要测试它,请使用以下内容:

int main()
{
  char str[6];
  getBin(10, str);
  printf("%s\n", str);
  return 0;
}

关于c - 十进制转二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7911651/

相关文章:

performance - 快速、无分支的 unsigned int 绝对差

android - 在 Snapdragon Flight DSP 上打开的文件返回可疑的大量数字

c - 在 glib 中运行 cat/proc/cpuinfo

java - 在矩阵中创建二进制数的方法

c++ - 在没有条件的情况下将一个 unsigned char 的一位设置为另一个 unsigned char 的另一位

java - 如何比较 RGB 值,忽略 alpha

c - 允许程序特权在启动时从任何帐户更改 PC 名称?

c++ - 如何在 Visual Studio 中知道项目是 C 还是 C++?

python - 如何将 int 转换为包含二进制表示的列表在 python 中快速?

c - 补码截断?