เลขฐานแปด (Octal) ใช้ฐาน 8 เลขฐานสิบ (Decimal) ใช้ฐาน 10
ตัวอย่างการแปลง:
| Decimal | Octal |
|---|---|
| 10 | 12 |
| 70 | 106 |
| 25 | 31 |
| 16 | 20 |
ตัวอย่างโค้ด (แปลงทั้ง 2 ทิศทาง)
#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
while loop: decimalNum ≠ 0, หาร 8 เอาเศษคูณ placeValue บวกสะสม, placeValue ×= 10
while (decimalNum != 0) {
octalNum += (decimalNum % 8) * placeValue;
decimalNum /= 8;
placeValue *= 10;
}
อธิบาย OctalToDecimal
while loop: octalNum ≠ 0, หาร 10 เอาเลขหลักสุดท้าย คูณ 8^power บวกสะสม, power++, octalNum /= 10
while(octalNum != 0) {
decimalNum += (octalNum % 10) * pow(8, power);
++power;
octalNum /= 10;
}
main() เรียกทั้ง 2 ฟังก์ชัน:
DecimalToOctal(20); OctalToDecimal(32);