CREATE OWN LIBRARY

Back to Programming

Description

The program is written here to convert a hexadecimal number into its equivalent decimal number. For example, if a hexadecimal number is ${\left(2A\right)}_{16}$

Now, the equivalent decimal number will be calculated by multiplying each digit of the hexadecimal number with the increasing power of 16 (the power will starts from 0 and will increase from right to left).

Therefore, the equivalent decimal number:

${16}^{1}$ + A×${16}^{0}$

= 2×${16}^{1}$ + 10×${16}^{0}$

= 32 + 10

${\left(42\right)}_{10}$

Algorithm

OUTPUT: Equivalent decimal number

PROCESS:

Step 1: [Taking the input]

Step 2: [Converting into decimal number]

Set d<-0

Set b<-1

Set n<-length of the string stored in variable ‘hex’

For i=0 to n-1 repeat

If hex[i]≥'a' and hex[i]≤'z'

Set hex[i]<-hex[i]-32

[End of ‘if’]

[End of ‘for’ loop]

For i=n-1 to 0 step -1 repeat

[if the value is a numeric digit]

If hex[i]≥'0' and hex[i]≤'9' then

Set d<-d+(hex[i]-48)×b

Set b<-b×16

[End of ‘if’]

[If the value is greater equals to 10 and less equals to 15]

else if hex[i]≥'A' and hex[i]≤'F' then

Set d<-d+(hex[i]-55)×b

Set b<-b×16

[End of ‘if’]

[End of ‘for’ loop]

[Printing the decimal value]

Print "The decimal value is: d"

Step 3: Stop.

TIME COMPLEXITY:

for(i=n-1;i>=0;i--)----------------------------------------O(n)

{

//if the value is a numeric digit

if(hex[i]>='0' && hex[i]<='9')-------------O(1)

{

d=d+(hex[i]-48)*b;

b=b*16;

}

//if the value is greater equals to 10 and

//less equals to 15

else if(hex[i]>='A' && hex[i]<='F')-------O(1)

{

d=d+(hex[i]-55)*b;

b=b*16;

}

}

//printing the decimal value

printf("The decimal value is: %d",d);

}

The time complexity is O(n) where ‘n’ is the number of digits of the hexadecimal number

SPACE COMPLEXITY:

The space complexity is O(1) as it requires a constant number of memory spaces to execute the program for any given input.