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