我试图编写一个程序来将二进制输入更改为十进制,我在另一个网站上看到了这段代码,但我不明白这段代码中的公式是如何将二进制更改为十进制的。< / p>
#include <stdio.h>
int main() {
long int binaryNumber, decimalNumber = 0, j = 1, remainder;
printf("Enter any binary number: ");
scanf("%ld", &binaryNumber);
while (binaryNumber != 0) {
remainder = binaryNumber % 10;
decimalNumber = decimalNumber + remainder * j;
j = j * 2;
binaryNumber = binaryNumber / 10;
}
printf("Equivalent decimal value: %ld", decimalNumber);
return 0;
}
答案 0 :(得分:1)
此代码使用模数运算从输入的二进制数的右侧选择1或0,并将其存储在remainder
中。然后将存储在remainder
中的每个1或0乘以它所代表的值,由j
表示,然后添加到decimalNumber
。然后将二进制数除以10以将所有数字向右移位。重复此过程,直到二进制数中不再有1个。