Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để chuyển đổi số nhị phân thành số thập phân và ngược lại

Trong hệ thống máy tính, số nhị phân được biểu thị trong hệ thống chữ số nhị phân trong khi số thập phân nằm trong hệ thống chữ số thập phân. Số nhị phân ở cơ số 2 trong khi số thập phân ở cơ số 10.

Ví dụ về số thập phân và số nhị phân tương ứng của chúng như sau -

Số thập phân Số nhị phân
10 01010
7 00111
25 11001
16 10000

Một chương trình chuyển đổi các số nhị phân thành thập phân và các số thập phân thành nhị phân như sau.

Ví dụ

#include <iostream>
using namespace std;
void DecimalToBinary(int n) {
   int binaryNumber[100], num=n;
   int i = 0;
   while (n > 0) {
      binaryNumber[i] = n % 2;
      n = n / 2;
      i++;
   }
   cout<<"Binary form of "<<num<<" is ";
   for (int j = i - 1; j >= 0; j--)
      cout << binaryNumber[j];
   cout<<endl;
}
int BinaryToDecimal(int n) {
   int decimalNumber = 0;
   int base = 1;
   int temp = n;
   while (temp) {
      int lastDigit = temp % 10;
      temp = temp/10;
      decimalNumber += lastDigit*base;
      base = base*2;
   }
   cout<<"Decimal form of "<<n<<" is "<<decimalNumber<<endl;;
}
int main() {
   DecimalToBinary(23);
   BinaryToDecimal(10101);
   return 0;
}

Đầu ra

Binary form of 23 is 10111
Decimal form of 10101 is 21

Trong chương trình đã cho ở trên, có hai hàm DecimalToBinary và BinaryToDecimal. Chúng chuyển đổi số từ thập phân sang nhị phân và nhị phân sang thập phân tương ứng.

Trong hàm DecimalToBinary, giá trị nhị phân của số thập phân n được lưu trữ trong mảng binaryNumber []. Một vòng lặp while được sử dụng và kết quả của thao tác n modulus 2 được lưu trữ trong binaryNumber [] cho mỗi lần lặp lại của vòng lặp. Điều này được hiển thị bằng đoạn mã sau.

while (n > 0) {
   binaryNumber[i] = n % 2;
   n = n / 2;
   i++;
}

Sau đó, số nhị phân được hiển thị bằng vòng lặp for. Điều này được hiển thị như sau.

cout<<"Binary form of "<<num<<" is ";
for (int j = i - 1; j >= 0; j--)
cout << binaryNumber[j];

Trong hàm BinaryToDecimal (), một vòng lặp while được sử dụng để chuyển số nhị phân thành số thập phân. LastDigit chứa bit cuối cùng của biến tạm thời. Cơ sở chứa giá trị cơ sở như 2, 4, 6, 8, v.v. Số thập phân chứa tổng giá trị Số thập phân trước đó và tích của Dấu cuối cùng và cơ số.

Tất cả điều này được chứng minh bằng đoạn mã sau -

while (temp) {
   int lastDigit = temp % 10;
   temp = temp/10;
   decimalNumber += lastDigit*base;
   base = base*2;
}

Trong hàm main (), các hàm DecimalToBinary () và BinaryToDecimal () được gọi. Điều này được hiển thị như sau.

DecimalToBinary(23);
BinaryToDecimal(10101);