Số nhị phân sử dụng cơ số 2, số bát phân sử dụng cơ số 8. Dưới đây là bảng đối chiếu:
| Số nhị phân | Số bát phân |
|---|---|
| 01010 | 12 |
| 00111 | 7 |
| 11001 | 31 |
| 10000 | 20 |
Chương trình dưới đây thực hiện chuyển đổi hai chiều:
Ví dụ
#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;
}
Kết quả
Binary to Octal Binary number: 1011 Octal number: 13 Octal to Binary Octal number: 25 Binary number: 10101
Chương trình chứa hai hàm chính:
BinaryToOctal()
Chuyển nhị phân sang bát phân qua trung gian thập phân.
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()
Chuyển bát phân sang nhị phân cũng qua trung gian thập phân.
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;
}
Hàm main()
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;
}