c ++十进制到二进制混淆

时间:2013-03-07 14:44:19

标签: c++ binary decimal

我在Java中解决了这个问题并使用了Integer.toBinaryString()但是这样的函数在c ++中是不可用的(据我所知)

我已经完成了这个功能并且它完全有效但是我很困惑为什么它有效,任何帮助将不胜感激

void decimalToBinary (int number)
{
    int remainder;
    if (number <= 1)
    {
        cout << number;
        return;
    }
    remainder = number % 2;
    decimalToBinary(number >> 1);
    cout << remainder;
}

我理解的主要问题是递归调用,为什么它需要number >> 1

因为当它最初被调用时它使用数字,并检查它是否是&lt; = 1,在这种情况下它只输出数字(0/1)并结束函数,否则它取数字并得到余数来自除以2(1/0)然后再用number >> 1

调用该函数

number >> 1是否意味着它从整数中删除了结束号 ex 1234在递归调用中会是123吗?

2 个答案:

答案 0 :(得分:1)

>>与除以2的效果相同。

数字存储为二进制,因此将其向右移一位会将该位移出,这就是将数字除以2的效果,就像将十进制数字向右移动一样将它除以10。

您可以使用具有相同效果的除法。

答案 1 :(得分:0)

&gt;&gt;运算符基本上将位向右移动了作为参数给出的次数,并且它基本上等于将该数除以该参数的两倍(x / 2 ^ n)。要将十进制数转换为二进制数,您需要递归地将数字除以2,直到不再可能进行除法 - 在这种情况下,当它小于1.并且在这种情况下,您必须在每个这样的除法中收集提醒,这是实际上是你想得到的二进制数。