ในระบบคอมพิวเตอร์ เลขฐานสองจะแสดงในระบบเลขฐานสองในขณะที่เลขฐานแปดอยู่ในระบบเลขฐานแปด เลขฐานสองอยู่ในฐาน 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; }