|
|
| ||||
|
|||||
Integer
There are some mathematical basic and equations to convert an integer to binary number. But in computer with C/C++ we need not to know all of that. As we know computer represent any data in its memory with binary system. C/C++ can directly use that without doing any mathematical conversion. But for doing this, you need the knowledge about the bit-wise-operator, the great tools of C/C++. Using the following code you can convert a number into binary system and stores the binary number into an array. It also return the number of 1 in the binary representation.
/* nbconversion.cpp
Implementation of various number base conversion
Compiled : CYGNU & Microsoft Visual C++ 6.0
Copyright 2003 by M H Rasel & CUET Old Sailor ; all rights reserved.
Permission is granted for use in non-commercial applications provided this
copyright notice remains intact and unchanged.
*/
/* ********************************************************* */
/* Convert an integer number into binary number */
/* Input : An integer number and an array */
/* Return : Number of one (1) int the representation */
/* ********************************************************* */
int inttobin(unsigned int a,int *bin)
{
int one=0;
unsigned int c=1;
int i ;
for(i=31;i>=0;i--)
{
one = one + (a&c);
bin[i] = (a&c)?1:0;
c<<=1;
}
return one;
}
Binary to Integer
There are also some mathematical basic and equations to convert a binary number into decimal number. But in computer with C/C++ we need not to know all of that in the same way. Using the following code you can convert a binary number into integer.
/* nbconversion.cpp
Implementation of various number base conversion
Compiled : CYGNU & Microsoft Visual C++ 6.0
Copyright 2003 by M H Rasel & CUET Old Sailor ; all rights reserved.
Permission is granted for use in non-commercial applications provided
this copyright notice remains intact and unchanged.
*/
/* ********************************************************* */
/* Convert a binary number into binary number */
/* Input : An array that representation an integer */
/* Return : The integer number */
/* ********************************************************* */
unsigned int creatnum(int *num)
{
int i;
unsigned int a=0;
for(i=0;i<32;i++)
{ a= a|num[i];
if(i!=31) a <<= 1;
}
return a;
}
Integer ! hex ! Integer
Thought you have to know something about the bit-wise operator to convert numbers between binary and integer but to convert a number into hex or from hex to integer is very simple. You have to know just one function to do this.
char hex[100];
int num = 4095;
sprintf(hex,”%X”,num); // convert the num in upper case hex decimal in hex
sprintf(hex,”%x”,num); // convert the num in lower case hex decimal in hex
sscanf(hex,”%x”,&num); // convert the hex number hex in integer num
Integer to any base
To convert a integer number into a hex number or binary number you do not need any mathematical knowledge but to convert a integer number into any base you need the knowledge. And a programmer this knowledge is very important for you. However the following code help you to convert any integer number on any base from 2 to 36.
/* nbconversion.cpp
Implementation of various number base conversion
Compiled : CYGNU & Microsoft Visual C++ 6.0
Copyright 2003 by M H Rasel & CUET Old Sailor ; all rights reserved.
Permission is granted for use in non-commercial applications provided
this copyright notice remains intact and unchanged.
*/
#include<string.h>
#include<stdio.h>
#define MAXDGT 200 /* maximum number of digit */
/* ********************************************************* */
/* A general swap function that swap two object. */
/* Input : Two object. */
/* Return : None */
/* ********************************************************* */
template <class T>
void swap(T &x, T &y)
{ T tmp=x; x=y; y=tmp; };
/* ***************************************************************** */
/* A general string reverse function that reverse the */
/* passed string and store the string int to the parameter. */
/* Input : A string */
/* Return : None */
/* ***************************************************************** */
void revstr(char *str)
{ int i=0,l=strlen(str);
while(i<l)
swap(str[i++],str[--l]);
}
/* ******************************************************************* */
/* A general base conversion function */
/* Input : A number n and a base b */
/* Return : A character array which contain the number n in base b */
/* ******************************************************************* */
char *itob(long int n,int b=10)
{ char num[MAXDGT];
int j,sign;
register int i=0;
if( (sign=n) <0 )
n= -n;
do
{ j=n%b;
num[i++]=(j<10) ? (j+'0'): ('A'+j-10);
}while((n/=b)!=0);
if(sign < 0) num[i++]='-';
num[i]='\0';
revstr(num);
return num;
}
/* Sample main */
main(void)
{ printf(itob(71],36)); }
Decimal To Roman
Roman number is very useful number system. Often we need to convert a decimal number into Roman number. In Roman number the following symbol are used.
/* nbconversion.cpp
Implementation of various number base conversion
Compiled : CYGNU & Microsoft Visual C++ 6.0
Copyright 2003 by M H Rasel & CUET Old Sailor ; all rights reserved.
Permission is granted for use in non-commercial applications provided
this copyright notice remains intact and unchanged.
*/
#include<stdio.h>
/* ********************************** */
/* Convert number 1 to 10 */
/* Input : A integer number */
/* Return : None */
/* ********************************** */
void unit(int n)
{ switch(n){
case 3 : printf("i");
case 2 : printf("i");
case 1 : printf("i"); break;
case 4 : printf("i");
case 5 : printf("v"); break;
case 6 : printf("vi"); break;
case 7 : printf("vii"); break;
case 8 : printf("viii"); break;
case 9 : printf("ix"); break;
}
}
/* ********************************** */
/* Convert number 10 to 100 */
/* Input : A integer number */
/* Return : None */
/* ********************************** */
void ten(int n)
{ switch(n){
case 3 : printf("x");
case 2 : printf("x");
case 1 : printf("x"); break;
case 4 : printf("x");
case 5 : printf("l"); break;
case 6 : printf("lx"); break;
case 7 : printf("lxx"); break;
case 8 : printf("lxxx"); break;
case 9 : printf("xc"); break;
}
}
/* ********************************** */
/* Convert number 100 to 500 */
/* Input : A integer number */
/* Return : None */
/* ********************************** */
void hnd(int n)
{ switch(n){
case 3 : printf("c");
case 2 : printf("c");
case 1 : printf("c"); break;
case 4 : printf("c");
case 5 : printf("M"); break;
}
}
/* ************************************************* */
/* Convert an integer number into roman system */
/* Input : A integer number */
/* Return : None */
/* ************************************************* */
void roman(int n)
{ int a,i;
if(n>=500)
{ a=n/500 ;
for(i=1;i<=a;i++)
printf("M");
}
n=n%500;
hnd(n/100);
n=n%100;
ten(n/10);
unit(n%10);
}
/* Sample main() function */
main(void){ roman(390); return 0; }
| |||||
Copyright © 2003
M
H Rasel
[Webmaster]
Last modified