Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ แปลงเลขฐานสอง (Binary) เป็นฐานแปด (Octal) และกลับกัน

ในระบบคอมพิวเตอร์ ตัวเลขฐานสอง (Binary) ใช้ฐาน 2 ส่วนตัวเลขฐานแปด (Octal) ใช้ฐาน 8 ทั้งสองระบบมีความสัมพันธ์ใกล้ชิดกัน เพราะ 23 = 8 ทำให้การแปลงระหว่างกันสะดวก

ตารางเปรียบเทียบ Binary และ Octal

เลขฐานสอง (Binary) เลขฐานแปด (Octal)
0101012
001117
1100131
1000020

โค้ดโปรแกรมแปลงสองทาง (Binary ↔ Octal)

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

// Binary → Octal
int BinaryToOctal(int binaryNum) {
    int octalNum = 0, decimalNum = 0, count = 0;
    while(binaryNum != 0) {
        decimalNum += (binaryNum % 10) * pow(2, count);
        ++count;
        binaryNum /= 10;
    }
    count = 1;
    while (decimalNum != 0) {
        octalNum += (decimalNum % 8) * count;
        decimalNum /= 8;
        count *= 10;
    }
    return octalNum;
}

// Octal → Binary
int OctalToBinary(int octalNum) {
    int decimalNum = 0, binaryNum = 0, count = 0;
    while(octalNum != 0) {
        decimalNum += (octalNum % 10) * pow(8, count);
        ++count;
        octalNum /= 10;
    }
    count = 1;
    while (decimalNum != 0) {
        binaryNum += (decimalNum % 2) * count;
        decimalNum /= 2;
        count *= 10;
    }
    return binaryNum;
}

int main() {
    int binaryNum = 1011, octalNum = 25;
    cout << "Binary to Octal" << endl;
    cout << "Binary number: " << binaryNum << endl;
    cout << "Octal number: " << BinaryToOctal(binaryNum) << endl;
    cout << "Octal to Binary" << endl;
    cout << "Octal number: " << octalNum << endl;
    cout << "Binary number: " << OctalToBinary(octalNum) << endl;
    return 0;
}

ผลลัพธ์

Binary to Octal
Binary number: 1011
Octal number: 13
Octal to Binary
Octal number: 25
Binary number: 10101

หลักการทำงาน

ทั้งสองฟังก์ชันใช้วิธีเดียวกัน คือ แปลงเป็น Decimal ก่อน (ฐาน 10) แล้วค่อยแปลงไปยังฐานเป้าหมาย:

  • BinaryToOctal(): Binary → Decimal → Octal
  • OctalToBinary(): Octal → Decimal → Binary

วิธีนี้เข้าใจง่ายและใช้ได้กับฐานอื่นๆ ด้วย