📅  最后修改于: 2023-12-03 15:36:04.164000             🧑  作者: Mango
在计算机科学中,二进制是一种重要的数字系统,而十进制是我们最熟悉的数字系统。在程序开发中,我们经常需要将二进制数转换成十进制数。在 C 语言中,我们可以通过以下方式来实现这一目的。
方法1:使用 pow 函数
#include <stdio.h>
#include <math.h>
int binaryToDecimal(long long n);
int main() {
long long n;
printf("请输入一个二进制数:");
scanf("%lld", &n);
printf("%lld 的十进制表示为 %d\n", n, binaryToDecimal(n));
return 0;
}
int binaryToDecimal(long long n) {
int decimalNumber = 0, i = 0, remainder;
while (n != 0) {
remainder = n % 10;
n /= 10;
decimalNumber += remainder * pow(2, i);
++i;
}
return decimalNumber;
}
在这个方法中,我们使用了 math.h 中的 pow 函数来计算 2 的幂。该函数的功能是计算一个数的指定次幂。该函数的原型如下:
double pow(double x, double y);
其中 x 为底数,y 为指数。该函数返回 x 的 y 次幂的值。
方法2:使用位运算符
#include <stdio.h>
int binaryToDecimal(long long n);
int main() {
long long n;
printf("请输入一个二进制数:");
scanf("%lld", &n);
printf("%lld 的十进制表示为 %d\n", n, binaryToDecimal(n));
return 0;
}
int binaryToDecimal(long long n) {
int decimalNumber = 0, remainder, i = 0;
while (n != 0) {
remainder = n % 10;
n /= 10;
decimalNumber += remainder << i; // 位运算符代替 pow 函数
++i;
}
return decimalNumber;
}
在这个方法中,我们使用了位运算符来代替 pow 函数。其中 "<<" 代表左移操作符,它将二进制数左移指定位数。例如,十进制数 2 在二进制中为 10,将其左移一位后即为 100,十进制数为 4。
通过以上两种方法,我们可以轻松地将二进制数转换为十进制数。其中,方法1 在处理较大的二进制数时会变得比较缓慢,而方法2 更为简单高效,容易理解和实现。