📅  最后修改于: 2023-12-03 14:40:00.005000             🧑  作者: Mango
二进制和十进制都是常用的数据表示方式,常常在计算机科学、电子工程、数学等领域中使用。本文介绍如何在C++中编写程序将二进制数转换为十进制,反之亦然。
二进制数是由0和1组成的数,而十进制数是由0到9组成的数。将二进制数转换为十进制数的常用方法是将二进制数按权相加。例如,二进制数10101110转换为十进制数的计算方法如下:
1*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 0*2^0
= 1*128 + 0*64 + 1*32 + 0*16 + 1*8 + 1*4 + 1*2 + 0*1
= 174
下面是实现二进制数转换为十进制数的示例代码:
#include <iostream>
#include <cmath>
using namespace std;
int binaryToDecimal(long long binaryNumber) {
int decimalNumber = 0, i = 0, remainder;
while (binaryNumber != 0) {
remainder = binaryNumber % 10;
binaryNumber /= 10;
decimalNumber += remainder * pow(2, i);
++i;
}
return decimalNumber;
}
int main() {
long long binaryNumber;
cout << "Enter a binary number: ";
cin >> binaryNumber;
cout << binaryNumber << " in binary = " << binaryToDecimal(binaryNumber) << " in decimal" << endl;
return 0;
}
代码中定义了一个binaryToDecimal函数,该函数的参数为一个long long类型的二进制数,返回一个int类型的十进制数。
将十进制数转换为二进制数的常用方法是采用短除法。将一个十进制数不断除以2,直到商为0为止,每次取得的余数就是二进制数的对应位。例如,十进制数174转换为二进制数的计算方法如下:
174 / 2 = 87 ... 0
87 / 2 = 43 ... 1
43 / 2 = 21 ... 1
21 / 2 = 10 ... 1
10 / 2 = 5 ... 0
5 / 2 = 2 ... 1
2 / 2 = 1 ... 0
1 / 2 = 0 ... 1
将每次获得的余数倒置即可得到二进制数10101110。
下面是实现十进制数转换为二进制数的示例代码:
#include <iostream>
using namespace std;
int decimalToBinary(int decimalNumber) {
int binaryNumber = 0, i = 1, remainder;
while (decimalNumber != 0) {
remainder = decimalNumber % 2;
decimalNumber /= 2;
binaryNumber += remainder * i;
i *= 10;
}
return binaryNumber;
}
int main() {
int decimalNumber;
cout << "Enter a decimal number: ";
cin >> decimalNumber;
cout << decimalNumber << " in decimal = " << decimalToBinary(decimalNumber) << " in binary" << endl;
return 0;
}
代码中定义了一个decimalToBinary函数,该函数的参数为一个int类型的十进制数,返回一个int类型的二进制数。
在本文中,我们介绍了如何在C++中实现二进制数转换为十进制数和十进制数转换为二进制数。这两种转换方法是计算机科学中常用的运算,在实际编程中也是非常有用的。