ในระบบคอมพิวเตอร์ ตัวเลขฐานสอง (Binary) ถูกแสดงในระบบนิพจน์ฐานสอง ในขณะที่ตัวเลขฐานแปด (Octal) อยู่ในระบบนิพจน์ฐานแปด ตัวเลขฐานสองมีฐานเป็น 2 ส่วนตัวเลขฐานแปดมีฐานเป็น 8
ตัวอย่างการแปลงเลขฐานสองและฐานแปดที่ตรงกัน
| เลขฐานสอง (Binary) | เลขฐานแปด (Octal) |
|---|---|
| 01101 | 15 |
| 00101 | 5 |
| 10110 | 26 |
| 01010 | 12 |
โค้ดโปรแกรมแปลง Octal เป็น Binary
#include <iostream>
#include <cmath>
using namespace std;
int OctalToBinary(int octalNum) {
int decimalNum = 0, binaryNum = 0, count = 0;
// แปลง Octal เป็น Decimal ก่อน
while(octalNum != 0) {
decimalNum += (octalNum % 10) * pow(8, count);
++count;
octalNum /= 10;
}
// แล้วค่อยแปลง Decimal เป็น Binary
count = 1;
while (decimalNum != 0) {
binaryNum += (decimalNum % 2) * count;
decimalNum /= 2;
count *= 10;
}
return binaryNum;
}
int main() {
int octalNum = 33;
cout << "Octal to Binary" << endl;
cout << "Octal number: " << octalNum << endl;
cout << "Binary number: " << OctalToBinary(octalNum) << endl;
return 0;
}
ผลลัพธ์
Octal to Binary Octal number: 33 Binary number: 11011
คำอธิบายการทำงาน
ฟังก์ชัน OctalToBinary() ทำงาน 2 ขั้นตอน:
- แปลง Octal เป็น Decimal: ใช้ลูป while ดึงตัวเลขทีละหลัก (mod 10) คูณกับ 8 ยกกำลังลำดับ แล้วสะสมค่า
- แปลง Decimal เป็น Binary: ใช้ลูป while หารด้วย 2 ทีละครั้ง เก็บเศษ (mod 2) สร้างตัวเลขฐานสองจากขวาไปซ้าย
ในฟังก์ชัน main() กำหนดค่า octalNum = 33 เรียกฟังก์ชัน และแสดงผลลัพธ์