#31. 将十进制数转换为二进制数(栈实现)

将十进制数转换为二进制数(栈实现)

题目背景

在你的计算机科学学习中,你可能已经以某种方式接触过二进制数字的概念。二进制表示在计算机科学中非常重要,因为计算机内部存储的所有值都是以二进制数字串的形式存在,即由 0 和 1 组成的串。如果我们不能在常见表示和二进制数字之间进行转换,我们将不得不以非常不便的方式与计算机交互。

整数值是常见的数据项。在计算机程序和计算中,它们经常被使用。我们在数学课上学习它们,当然,我们使用十进制数字系统或基数 10 来表示它们。十进制数字 23310233_{10} 及其对应的二进制等价 11101001211101001_2 可以分别解释为

2×102+3×101+3×1002 \times 10^2 + 3 \times 10^1 + 3 \times 10^0

$$1 \times 2^7 + 1 \times 2^6 + 1 \times 2^5 + 0 \times 2^4 + 1 \times 2^3 + 0 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 $$

但我们如何轻松地将整数值转换为二进制数字呢?答案是一个称为“除以 2”的算法,该算法使用栈来跟踪二进制结果的数字。

“除以 2”算法假设我们从一个大于 0 的整数开始。一个简单的迭代过程不断将十进制数字除以 2,并跟踪余数。第一次除以 2 可以确定值是偶数还是奇数。偶数的余数为 0,并且在个位上会有 0。奇数的余数为 1,并且在个位上会有 1。我们将二进制数字视为一串数字;我们计算的第一个余数实际上是序列中的最后一个数字。如下图所示,我们再次看到这种逆序的属性,这表明栈很可能是解决问题的合适数据结构。

(注:其中rem代表每次除法运算的余数,push remainders表示往栈中添加余数,pop remainders表示从栈中弹出余数)

题目描述

输入一个整数,请你用栈将其从10进制转换为2进制,最后输出这个二进制整数。

请你将课堂上的DSStack.py文件里面的内容复制在代码的最上面,然后再写真题的代码。

格式

输入

一个(十进制)整数。

输出

一个(二进制)整数。

样例

233
11101001