adinkins
asked on
C++ program add two numbers in base 8 (octal)
I need a program that adds two numbers in base 8. Can anyone help.
thanks
ASKER
This is a little beyond me.
My starting code is in binary. I just wanted to make it octal and add the numbers.
*/
#include <stdio.h>
short decimal2binary(unsigned long decimal_value, char
binary_value[32])
{
short index,significant_digits=0 ;
unsigned long temp_value;
for(index=31;index>=0;inde x--)
{
// temp_value=decimal_value/p ow(2,index )
temp_value=decimal_value/( 1<<index);
if(temp_value>0)
{
binary_value[index]=(char) ('0'+temp_ value);
// decimal_value=decimal_valu e%pow(2,in dex)
decimal_value=decimal_valu e%(1<<inde x);
if(!significant_digits)
significant_digits=index;
}
else
{
binary_value[index]='0';
}
}
return significant_digits;
}
short decimal2hex(unsigned long decimal_value, char hex_value[8])
{
short index,significant_digits=0 ;
unsigned long temp_value;
for(index=7;index>=0;index --)
{
// temp_value=decimal_value/p ow(16,inde x)
temp_value=decimal_value/( 1<<(index< <2));
if(temp_value>9)
{
hex_value[index]=(char)('A '-10+temp_ value);
// decimal_value=decimal_valu e%pow(16,i ndex)
decimal_value=decimal_valu e%(1<<(ind ex<<2));
if(!significant_digits)
significant_digits=index;
}
else if(temp_value>0)
{
hex_value[index]=(char)('0 '+temp_val ue);
// decimal_value=decimal_valu e%pow(16,i ndex)
decimal_value=decimal_valu e%(1<<(ind ex<<2));
if(!significant_digits)
significant_digits=index;
}
else
{
hex_value[index]='0';
}
}
return significant_digits;
}
void main()
{
short significant_digits,index;
char hex_value[8];
char binary_value[32];
/*
* Hex conversion
*/
significant_digits=decimal 2hex(0x012 3FEDC,hex_ value);
printf("0x0123FEDC = 0x");
/*
* With leading zeros ...
* for(index=8;index>=0;index --)
*/
for(index=significant_digi ts;index>= 0;index--)
printf("%c",hex_value[inde x]);
/*
* Binary conversion next
*/
significant_digits=decimal 2binary(0x 0123FEDC,b inary_valu e);
printf(" = 0b");
/*
* Leading zeros...
* for(index=31;index>=0;inde x--)
*/
for(index=significant_digi ts;index>= 0;index--)
printf("%c",binary_value[i ndex]);
printf("\n");
}
My starting code is in binary. I just wanted to make it octal and add the numbers.
*/
#include <stdio.h>
short decimal2binary(unsigned long decimal_value, char
binary_value[32])
{
short index,significant_digits=0
unsigned long temp_value;
for(index=31;index>=0;inde
{
// temp_value=decimal_value/p
temp_value=decimal_value/(
if(temp_value>0)
{
binary_value[index]=(char)
// decimal_value=decimal_valu
decimal_value=decimal_valu
if(!significant_digits)
significant_digits=index;
}
else
{
binary_value[index]='0';
}
}
return significant_digits;
}
short decimal2hex(unsigned long decimal_value, char hex_value[8])
{
short index,significant_digits=0
unsigned long temp_value;
for(index=7;index>=0;index
{
// temp_value=decimal_value/p
temp_value=decimal_value/(
if(temp_value>9)
{
hex_value[index]=(char)('A
// decimal_value=decimal_valu
decimal_value=decimal_valu
if(!significant_digits)
significant_digits=index;
}
else if(temp_value>0)
{
hex_value[index]=(char)('0
// decimal_value=decimal_valu
decimal_value=decimal_valu
if(!significant_digits)
significant_digits=index;
}
else
{
hex_value[index]='0';
}
}
return significant_digits;
}
void main()
{
short significant_digits,index;
char hex_value[8];
char binary_value[32];
/*
* Hex conversion
*/
significant_digits=decimal
printf("0x0123FEDC = 0x");
/*
* With leading zeros ...
* for(index=8;index>=0;index
*/
for(index=significant_digi
printf("%c",hex_value[inde
/*
* Binary conversion next
*/
significant_digits=decimal
printf(" = 0b");
/*
* Leading zeros...
* for(index=31;index>=0;inde
*/
for(index=significant_digi
printf("%c",binary_value[i
printf("\n");
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
MsgBox Base8Add("32", "7")
End Sub
Function Base8Add(num1 As String, num2 As String) As String
Dim x As Long
Dim y As Long
Dim z As Long
Dim c As Long
Dim m As Long
For c = Len(num1) To 1 Step -1
z = z + Val(Mid(num1, c, 1)) * 8 ^ m
m = m + 1
Next
m = 0
For c = Len(num2) To 1 Step -1
z = z + Val(Mid(num2, c, 1)) * 8 ^ (c - 1)
m = m + 1
Next
While z > 0
Base8Add = CStr(z Mod 8) & Base8Add
z = z \ 8
Wend
End Function