ในระบบคอมพิวเตอร์ เลขฐานสองจะแสดงในระบบเลขฐานสองในขณะที่เลขฐานแปดอยู่ในระบบเลขฐานแปด เลขฐานสองอยู่ในฐาน 2 ในขณะที่เลขฐานแปดอยู่ในฐาน 8
ตัวอย่างของเลขฐานสองและเลขฐานแปดที่เกี่ยวข้องมีดังนี้ -
| เลขฐานสอง | เลขฐานแปด |
|---|---|
| 01010 | 12 |
| 00111 | 7 |
| 11001 | 31 |
| 10000 | 20 |
โปรแกรมที่แปลงเลขฐานสองเป็นเลขฐานแปดและเลขฐานแปดเป็นเลขฐานสองมีดังต่อไปนี้ -
ตัวอย่าง
#include <iostream>
#include <cmath>
using namespace std;
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;
}
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
ในโปรแกรมข้างต้น มีสองฟังก์ชัน BinaryToOctal() และ OctalToBinary()
BinaryToOctal() แปลงเลขฐานสองที่กำหนดให้เป็นเลขฐานแปด ทำได้โดยการแปลงเลขฐานสองเป็นเลขฐานสิบก่อนแล้วจึงแปลงเลขฐานสิบเป็นเลขฐานแปด ดังจะเห็นได้จากตัวอย่างโค้ดต่อไปนี้ −
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;
} OctalToBinary() แปลงเลขฐานแปดที่กำหนดให้เป็นเลขฐานสอง ซึ่งทำได้โดยการแปลงเลขฐานแปดเป็นเลขฐานสิบก่อนแล้วจึงแปลงเลขฐานสิบเป็นเลขฐานสอง ดังจะเห็นได้จากตัวอย่างโค้ดต่อไปนี้ −
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;
} ในฟังก์ชัน main() จะมีการให้เลขฐานสองและเลขฐานแปด จากนั้นเลขฐานแปดและเลขฐานสองที่สอดคล้องกันจะถูกคำนวณโดยการเรียก BinaryToOctal() และ OctalToBinary() ตามลำดับ ด้านล่างนี้ −
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;
}