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

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


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

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

Số thập phân Số bát phân
10 12
70 106
25 31
16 20

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

Ví dụ

#include <iostream>
#include <cmath>
using namespace std;

void DecimalToOctal(int decimalNum) {
  int octalNum = 0, placeValue = 1;
  int dNo = decimalNum;
  while (decimalNum != 0) {
    octalNum += (decimalNum % 8) * placeValue;
    decimalNum /= 8;
    placeValue *= 10;
  }
  cout << "Dạng bát phân của số thập phân " << dNo << " là " << octalNum << endl;
}

void OctalToDecimal(int octalNum) {
  int decimalNum = 0, power = 0;
  int oNo = octalNum;
  while (octalNum != 0) {
    decimalNum += (octalNum % 10) * pow(8, power);
    ++power;
    octalNum /= 10;
  }
  cout << "Dạng thập phân của số bát phân " << oNo << " là " << decimalNum << endl;
}

int main() {
  DecimalToOctal(20);
  OctalToDecimal(32);
  return 0;
}

Kết quả đầu ra

Dạng bát phân của số thập phân 20 là 24
Dạng thập phân của số bát phân 32 là 26

Trong chương trình, hàm DecimalToOctal chuyển thập phân sang bát phân, hàm OctalToDecimal chuyển bát phân sang thập phân.

Trong DecimalToOctal, octalNum khởi tạo 0. placeValue chỉ vị trí chữ số. Tìm octalNum bằng vòng lặp while:

while (decimalNum != 0) {
  octalNum += (decimalNum % 8) * placeValue;
  decimalNum /= 8;
  placeValue *= 10;
}

Sau khi có octalNum, hiển thị:

cout << "Dạng bát phân của số thập phân " << dNo << " là " << octalNum << endl;

Trong OctalToDecimal, mỗi vòng lặp octalNum chia 10 (lấy chữ số cuối), nhân với 8^power, cộng vào decimalNum. Tăng power, chia octalNum cho 10:

while (octalNum != 0) {
  decimalNum += (octalNum % 10) * pow(8, power);
  ++power;
  octalNum /= 10;
}

Sau khi tìm decimalNum, hiển thị:

cout << "Dạng thập phân của số bát phân " << oNo << " là " << decimalNum << endl;

Hàm main() chỉ chứa lời gọi hai hàm chuyển đổi:

DecimalToOctal(20);
OctalToDecimal(32);