在 C 语言中打印数字的二进制

Muhammad Husnain 2023年10月12日
  1. 二进制数制
  2. 转换的 C 实现
在 C 语言中打印数字的二进制

这个简单的指南是关于使用 C 语言实现十进制到二进制数字系统转换器的。在直接进入实现之前,我们将首先回顾一下二进制数系统,然后讨论多个 C 实现,以将十进制表示转换为二进制等值。

二进制数制

任何在两个离散或分类状态下运行的系统都称为二进制系统。同样,二进制数字系统仅使用两个符号表示数字:1(一)和 0(零)。

因此,它也被称为 base-2 系统。

目前,大多数基于晶体管的逻辑电路实现都使用离散的二进制状态。因此,所有现代数字计算机都使用二进制系统来表示、存储和处理数据。

例如,将 6 转换为二进制数系统。

$$
(6)_{10} = (110)_2
$$

这里,6 是来自以 10 为底的十进制数系统中的数,其对应的二进制是 110,在以 2 为底的二进制数系统中。我们来看看这个转换的过程。

转换过程

第 1 步:将 6 除以 2 得到答案。使用在此阶段获得的整数商,你将获得下一步的红利。

以这种方式继续,直到商达到零。

6/2 = 3 0
3/2 = 1 1
1/2 = 0 1

第 2 步:二进制可以通过收集所有的余数按照相反的时间顺序(从下到上)形成。

1 是最高有效位 (MSB),0 是最低有效位 (LSB)。因此,6 的二进制是 110

转换的 C 实现

C 语言中有多种方法可以将数字转换为二进制数系统。它可以是迭代解决方案或递归解决方案。

这取决于你选择的编程方式。本文将讨论递归解决方案,因为它非常简单。

解决方案 1:

如果 number > 1

  1. number 放在堆栈上
  2. 递归调用 number/2 函数
  3. 从堆栈中取出一个 number,将其除以二,然后输出余数。
#include <stdio.h>

void convertToBinary(unsigned a) {
  /* step 1 */
  if (a > 1) convertToBinary(a / 2);

  /* step 2 */
  printf("%d", a % 2);
}
int main() {
  // Write C code here
  printf("Binary of the number is: ");
  convertToBinary(6);
  printf("\n");

  return 0;
}

此代码段发布以下输出。

Binary of the number is: 110

解决方案 2:

  1. 检查是否 number > 0
  2. 将右移运算符应用 1 位,然后递归调用该函数。
  3. 输出 number 的位
#include <stdio.h>
void convertToBinary(unsigned n) {
  if (n > 1) convertToBinary(n >> 1);

  printf("%d", n & 1);
}
int main() {
  // Write C code here
  printf("Binary of the number is: ");
  convertToBinary(8);
  printf("\n");

  return 0;
}

给定代码片段的输出是:

Binary of the number is: 1000
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn