Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c++;十进制到二进制混淆 我已经用java解决了这个问题,使用了整数.toBialStruts()/,但是C++中的函数(>1是否意味着它从整数中删除了结束数字 ex1234在递归调用中是123?_C++_Binary_Decimal - Fatal编程技术网

c++;十进制到二进制混淆 我已经用java解决了这个问题,使用了整数.toBialStruts()/,但是C++中的函数(>1是否意味着它从整数中删除了结束数字 ex1234在递归调用中是123?

c++;十进制到二进制混淆 我已经用java解决了这个问题,使用了整数.toBialStruts()/,但是C++中的函数(>1是否意味着它从整数中删除了结束数字 ex1234在递归调用中是123?,c++,binary,decimal,C++,Binary,Decimal,我已经做了这个函数,它完全可以工作,但我不明白为什么它可以工作,任何帮助都将不胜感激 void decimalToBinary (int number) { int remainder; if (number <= 1) { cout << number; return; } remainder = number % 2; decimalToBinary(number >> 1);

我已经做了这个函数,它完全可以工作,但我不明白为什么它可以工作,任何帮助都将不胜感激

void decimalToBinary (int number)
{
    int remainder;
    if (number <= 1)
    {
        cout << number;
        return;
    }
    remainder = number % 2;
    decimalToBinary(number >> 1);
    cout << remainder;
}
void十进制数(整数)
{
整数余数;
若有(1号);
在那里不能超过1

因为当它最初被调用时,它使用数字,并检查它是否大于1

数字>>1
是否意味着它从整数中删除了结束数字
ex1234在递归调用中是123?

这与被2除的效果相同

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


您可以使用除法来达到同样的效果。

>运算符基本上将位向右移位,移位次数作为参数,基本上等于将数字除以该参数的2倍幂(x/2^n)。要将十进制数转换为二进制数,您需要将该数递归地除以2,直到没有更多的除法为止-在这种情况下,当它小于1时。在这种情况下,您必须收集每个除法中的提醒,这实际上是您想要获得的二进制数。

提示:
>1
这里相当于
/2
number>>1
(通过
1
位右移
number
)与
number/2
相同,谢谢:),因此我可以使用number/2,并获得与>>1相同的效果