C++程式:將二進位制數轉換為八進位制數,反之亦然


在計算機系統中,二進位制數以二進位制數製表示,而八進位制數以八進位制數製表示。二進位制數以2為基數,而八進位制數以8為基數。

以下是二進位制數及其對應的八進位制數的示例:

二進位制數八進位制數
0101012
001117
1100131
1000020

下面給出了一個將二進位制數轉換為八進位制數和將八進位制數轉換為二進位制數的程式:

示例

 即時演示

#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;
}

更新於: 2020年6月25日

819 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告