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

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


ในระบบคอมพิวเตอร์ เลขฐานแปดจะแสดงในระบบเลขฐานแปดในขณะที่เลขฐานสิบอยู่ในระบบเลขฐานสิบ เลขฐานแปดอยู่ในฐาน 8 ในขณะที่เลขฐานสิบอยู่ในฐาน 10

ตัวอย่างของเลขฐานสิบและเลขฐานแปดที่เกี่ยวข้องมีดังนี้

เลขทศนิยม เลขฐานแปด
10 12
70 106
25 31
16 20

โปรแกรมที่แปลงเลขฐานแปดเป็นทศนิยมและเลขฐานสิบเป็นฐานแปดมีดังนี้ -

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
void DecimalToOctal(int decimalNum) {
   int octalNum = 0, placeValue = 1;
   int dNo = decimalNum;
   while (decimalNum != 0) {
      octalNum += (decimalNum % 8) * placeValue;
      decimalNum /= 8;
      placeValue *= 10;
   }
cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;
}
void OctalToDecimal(int octalNum) {
   int decimalNum = 0, power = 0;
   int oNo = octalNum;
   while(octalNum != 0) {
      decimalNum += (octalNum%10) * pow(8,power);
      ++power;
      octalNum/=10;
   }
   cout<<"Decimal form of octal number "<<oNo<<" is "<<decimalNum<<endl;
}
int main() {
   DecimalToOctal(20);
   OctalToDecimal(32);
   return 0;
}

ผลลัพธ์

Octal form of decimal number 20 is 24
Decimal form of octal number 32 is 26

ในโปรแกรมด้านบน ฟังก์ชัน DecimalToOctal จะแปลงเลขฐานสิบให้เป็นฐานแปด และฟังก์ชัน OctalToDecimal จะแปลงเลขฐานแปดให้เป็นฐานสิบ

ในฟังก์ชัน DecimalToOctal เริ่มแรกตัวแปร octalNum ถูกเตรียมข้อมูลเบื้องต้นให้เป็นศูนย์ ตัวแปร placeValue หมายถึงตำแหน่งของตัวเลขในตัวเลข พบค่าของ octalNum โดยใช้ลูป while

สำหรับการวนซ้ำแต่ละครั้งของลูป while decimalNum จะถูกหารด้วย 8 และส่วนที่เหลือจะถูกคูณด้วย placeValue ซึ่งถูกเพิ่มเข้าไปในค่าก่อนหน้าของ octalNum decimalNum ยังถูกหารด้วย 8 และผลหารจะถูกเก็บไว้กลับ placeValue คูณด้วย 10

ข้อมูลโค้ดที่แสดงสิ่งนี้มีดังนี้

while (decimalNum != 0) {
   octalNum += (decimalNum % 8) * placeValue;
   decimalNum /= 8;
   placeValue *= 10;
}

หลังจากค่าเลขฐานแปดนั่นคือ octalNum จะถูกแสดง ด้านล่างนี้ −

cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;

ในฟังก์ชัน OctalToDecimal ในการวนซ้ำแต่ละครั้งของ while loop octalNum จะถูกหารด้วย 8 และส่วนที่เหลือจะถูกคูณด้วย 8 ที่ยกกำลัง ซึ่งถูกเพิ่มเข้ากับค่าก่อนหน้าของ decimalNum กำลังเพิ่มขึ้น 1 และ octalNum หารด้วย 10 ซึ่งแสดงให้เห็นดังนี้

while(octalNum != 0) {
   decimalNum += (octalNum%10) * pow(8,power);
   ++power;
   octalNum/=10;
}

หลังจากพบค่าของ decimalNum จะแสดงขึ้น มีลักษณะดังนี้

cout<<"Decimal form of octal number "<<oNo<<" is "<<decimalNum<<endl;

ฟังก์ชัน main() มีเฉพาะการเรียกฟังก์ชันไปยัง DecimalToOctal() และ OctalToDecimal() ด้วยค่าที่ต้องการ สิ่งนี้แสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้

DecimalToOctal(20);
OctalToDecimal(32);