[英]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 >> 1
的number >> 1
表示它从整数ex 1234中删除结束号在递归调用中将为123?
>>
与除以2的效果相同。
该数字以二进制形式存储,因此将其右移一位会将其推出,这具有将数字除以2的效果,就像您将十进制数字向右移一位一样它除以10。
您可以使用除法具有相同的效果。
>>运算符基本上将这些位向右移动作为其自变量的次数,它基本上等于将该数除以该自变量的2倍的幂(x / 2 ^ n)。 要将十进制数字转换为二进制,您需要将数字递归除以2,直到不再有可能的除法-在这种情况下,该数字小于1。在这种方式下,您必须在每个此类除法中收集提醒有效地获得您想要的二进制数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.