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

โปรแกรม C++ เพื่อแปลงเลขฐานสองเป็นเลขฐานแปดและในทางกลับกัน


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