Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ chuyển đổi nhị phân - thập phân hai chiều


Trong hệ thống máy tính, số nhị phân (binary) biểu diễn trong hệ cơ số 2, số thập phân (decimal) trong hệ cơ số 10.

Ví dụ số thập phân và nhị phân tương ứng:

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

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

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 << "Dạng nhị phân của " << num << " là ";
  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 << "Dạng thập phân của " << n << " là " << decimalNumber << endl;
}

int main() {
  DecimalToBinary(23);
  BinaryToDecimal(10101);
  return 0;
}

Kết quả đầu ra

Dạng nhị phân của 23 là 10111
Dạng thập phân của 10101 là 21

Trong chương trình, hai hàm DecimalToBinary và BinaryToDecimal chuyển đổi hai chiều.

Trong DecimalToBinary, giá trị nhị phân của n lưu trong mảng binaryNumber[]. Vòng while lấy phần dư n % 2 lưu vào mảng mỗi vòng:

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

Sau đó in nhị phân bằng vòng for ngược (từ chỉ số cao xuống 0):

cout << "Dạng nhị phân của " << num << " là ";
for (int j = i - 1; j >= 0; j--)
  cout << binaryNumber[j];

Trong BinaryToDecimal, vòng while chuyển nhị phân sang thập phân. lastDigit chứa bit cuối của temp. base chứa cơ số 2, 4, 6, 8... decimalNumber cộng dồn tích lastDigit * base:

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

Trong main(), gọi hai hàm chuyển đổi:

DecimalToBinary(23);
BinaryToDecimal(10101);