C++程序 十进制转二进制
给定一个十进制数作为输入,我们需要编写一个程序将给定的十进制数转换为等效的二进制数。
示例:
输入: 7
输出: 111
输入: 10
输出: 1010
输入: 33
输出: 100001
例如:
如果十进制数为10。
步骤1 :当10除以2时余数为零。因此,arr [0] = 0。
步骤2 :将10除以2。新数字是10/2 = 5。
步骤3 :当5除以2时余数为1。因此,arr [1] = 1。
步骤4 :将5除以2。新数字是5/2 = 2。
步骤5 :当2除以2时余数为零。因此,arr [2] = 0。
步骤6 :将2除以2。新数字是2/2 = 1。
步骤7 :当1除以2时余数为1。因此,arr [3] = 1。
步骤8 :将1除以2。新数字是1/2 = 0。
步骤9 :由于数字变成=0.倒序打印数组。因此,等效的二进制数为1010。
下面的图示示例将十进制数17转换为等效的二进制数。
以下是上述思路的实现。
输出:
时间复杂度: O(logn)
辅助空间: O(1)
我们可以使用位运算符来完成上述工作。 注意,位运算符比上述使用的算术运算符更快。
输出:
时间复杂度: O(1)
循环每次都运行常数(32)次,即使是小数。
辅助空间: O(1)
高效的方法:
这是另一种使用右移(>>)和按位与(&)运算符将十进制转换为二进制的高效方法。在这里,我们将仅使用二进制运算符,这些运算符通常计算非常快。
输出:
时间复杂度: O(log n)
辅助空间: O(1)
可以使用没有数组的方法进行十进制到二进制转换。
输出:
时间复杂度: O(logn)
辅助空间: O(1)
请注意,此方法类似于将二进制转换为十进制的方法,如本帖子所讨论的一样。 还有一种方法可以将任何十进制数转换为其二进制形式。想法是使用 bitset 。
以下是上述方法的实现。
输出:
时间复杂度: O(logn)
辅助空间: O(1)
另一种方法:
输出:
时间复杂度: O(logn)
辅助空间: O(1)