繁体   English   中英

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

[英]c++ Decimal to binary confusion

我已经用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

因为在最初调用它时会使用数字,并在这种情况下检查它是否<= 1才输出数字(0/1)并结束该函数,否则它将获取该数字并从2除以余数( 1/0),然后用number >> 1再次调用该函数

number >> 1number >> 1表示它从整数ex 1234中删除结束号在递归调用中将为123?

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

该数字以二进制形式存储,因此将其右移一位会将其推出,这具有将数字除以2的效果,就像您将十进制数字向右移一位一样它除以10。

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

>>运算符基本上将这些位向右移动作为其自变量的次数,它基本上等于将该数除以该自变量的2倍的幂(x / 2 ^ n)。 要将十进制数字转换为二进制,您需要将数字递归除以2,直到不再有可能的除法-在这种情况下,该数字小于1。在这种方式下,您必须在每个此类除法中收集提醒有效地获得您想要的二进制数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM