📜  C++示例 十进制转换为二进制(1)

📅  最后修改于: 2023-12-03 15:14:04.522000             🧑  作者: Mango

C++示例:十进制转换为二进制

在计算机科学中,十进制和二进制表示数字的方式是最常见的。在某些情况下,我们需要将一个十进制数转换为二进制数,这个过程叫做十进制到二进制的转换。这篇文章将介绍一种用C++语言实现十进制转换为二进制的方法。

算法思路

将十进制数转换为二进制数的过程,可以通过对这个十进制数进行二进制位分解的思想来实现。分解的过程如下:

  1. 取这个十进制数的最后一位(即取模2),记为二进制的最低位;
  2. 将这个十进制数除以2,直到商为0为止(即右移操作),将每次的余数依次记录为二进制数的下一位,直到商为0时,所有余数所组成的的二进制数就是最终的二进制数。

例如,将十进制数13转换为二进制数的过程:

  • 13的最后一位是1,所以作为二进制数字的最低位是1;
  • 将13除以2得到6余1,商为6,余数为1,1作为二进制数的下一位;
  • 将6除以2得到3余0,商为3,余数为0,0作为二进制数的下一位;
  • 将3除以2得到1余1,商为1,余数为1,1作为二进制数的下一位;
  • 将1除以2得到0余1,商为0,余数为1,1作为二进制数的最高位;
  • 因此,二进制数为1101。
代码实现

下面是C++语言实现将十进制数转换为二进制数的代码:

#include <iostream>
#include <stack>

using namespace std;

void to_binary(int num)
{
    stack<int> s; // 创建一个栈,用于存储二进制数
    while (num)
    {
        s.push(num % 2); // 余数入栈
        num /= 2; // 商作为下一次循环的数字
    }
    while (! s.empty())
    {
        cout << s.top(); // 输出栈顶元素
        s.pop(); // 删除栈顶元素
    }
}

int main()
{
    int num = 13; // 十进制数
    cout << num << " in binary is ";
    to_binary(num); // 调用to_binary函数进行转换
    cout << endl;
    return 0;
}

程序运行结果如下:

13 in binary is 1101
结束语

本篇文章介绍了一种用C++语言实现十进制数转换为二进制数的方法,算法由两个部分组成:余数入栈和弹出栈顶元素。此算法还有其他实现方式,读者可以自行尝试寻找最优解决方案。