Decimal to Octal conversion in C++
This tutorial would help in learning the following:
- Conversion of numbers from decimal-system (using 0 to 9) to octal-system (using 0 to 7).
- Conversion of characters into their respective ASCII codes.
- Code for Decimal to Octal conversion in C++.
Convert Decimal to Octal in C++
The decimal number system uses 10 digits (0 to 9) to represent a number while the octal number system uses 7 digits (0 to 7). The following algorithm is used to convert a decimal-number into an octal-number:
let the number be 63
- divide the number by 8 (integer division) and note down the remainder and keep the quotient
63/8: quotient -> 7, remainder -> 7 - repeat step 1 on the quotient till there comes another quotient which is 0, note down the remainders obtained in right-to-left fashion
7/8: quotient -> 0, remainder -> 7; remainder-list -> 77
- the remainders, placed in the right-to-left fashion form the binary representation
(63)10~ (77)8
Each character used in computing is assigned a special ASCII code (decimal-number-system); hence, to convert a character into octal-form, its ASCII code can be obtained and it can be converted.
Note, there can be different encoding systems on different machines.
CPP Program to convert decimal to octal
#include <stdio.h> #define string "Code Speedy" //this value can be changed to obtain the octal code for any collection of characters #define number 63//this value can be changed to obtain the octal form of any non negative integer void stringToOctal(char *); int octal(int); int main() { char *p=string; printf("The octal form of %d is %d\n",number,octal(number)); printf("The octal equivalent of %s is:\n",string); stringToOctal(p); return 0; } void stringToOctal(char *p)//converts a line to binary code { char c;//characters can be treated as integers in C++ while((c=*(p++))!='\0'){//each character is extracted and its binary code is printed printf("%d.",octal(c));//a full-stop follows after each individual binary code } printf("\n"); } int octal(int x)//converts an integer to its equivalent binary form { if(x<=1)return x; else return (x%8) + 10*octal(x/8); }
Output:
The octal form of 63 is 77 The octal equivalent of Code Speedy is: 103.157.144.145.40.123.160.145.145.144.171.
Summary:
int octal(int):
- a recursive approach is taken.
- a remainder (x%8) is taken at each call and added next to the remainder of the next call.
- multiplication with 10 is done to ensure that the addition is done in right-to-left fashion and not simple summation.
void stringToOctal(char *):
- a pointer to a collection of characters is taken as parameter.
- as long as the pointer does not point to a null character, the octal form of the current character is printed.
Also read:
Leave a Reply