数字的二进制表示,为什么这样

Binary representation of a number, why so

int DecimalToBinary (int number){
    int binary = 0, remainder = 0, i = 1;
 
    while (number != 0){
         remainder = number % 2;
         number /= 2;
         binary += remainder * i;
         i *= 10;
      }
    
    return binary;
 
}

有一个函数可以将数字从十进制转为二进制。使用 while 循环的前两行,一切似乎都很清楚,但是,我不明白为什么我们需要 binary += remainder * i,以及为什么 i *= 10.

请解释为什么会这样。

虽然评论已经说明了答案。考虑以下数字,即 abcd。这个数字也可以表示为 a*1000+b*100+c*10+d。这是行 binary += remainder * i; 的唯一目的,在每次迭代后我们将 i 乘以 10 以增加倍数。希望它回答了您的问题。