-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNumConversions.c
More file actions
108 lines (87 loc) · 1.85 KB
/
NumConversions.c
File metadata and controls
108 lines (87 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int revDigits(int n, int zeros)
{
int rev = 0;
while(n >0){
rev = rev * 10 + n % 10;
n = n /10;
}
rev = rev * pow(10, zeros);
return rev;
}
int count(int bin)
{
int nDigits = floor(log10(abs(bin))) + 1;
return nDigits;
}
char *revChars(char *hex, int length)
{
int i=length-1, j=0;
char *rev = (char*)malloc(length+1 * sizeof(char));
while(i >= 0){
rev[j] = hex[i];
j++; i--;
}
rev[j] = '\0';
return rev;
}
int decimalToBinary(int number)
{
int bin = 0;
int totLength =0;
while(number > 0){
bin = bin * 10 + number % 2;
number = number/2;
totLength++;
}
int zeros = totLength - count(bin);
return revDigits(bin, zeros);
}
int decimalToOctal(int number)
{
int oct = 0;
int totLength=0;
while(number > 0){
oct = oct * 10 + number % 8;
number = number / 8;
totLength++;
}
int zeros = totLength - count(oct);
return revDigits(oct, zeros);
}
char* decimalToHexa(int number)
{
int i=0, j;
char *hex = (char*)malloc(80*sizeof(char));
char hexcodes[6][2] = {"A", "B", "C", "D", "E", "F"};
while(number > 0){
if(number%16 > 9)
{
hex[i] = hexcodes[(number%16)%10][0];
}
else
{
hex[i] = (number % 16) + 48 ;
}
number = number / 16;
i++;
}
hex[i] = '\0';
return revChars(hex, i);
}
int main()
{
int i, number, pos, bin, oct;
char* hex;
printf("Enter the number");
scanf("%d", &number);
bin = decimalToBinary(number);
oct = decimalToOctal(number);
hex = decimalToHexa(number);
printf("Binary :%d\n", bin);
printf("Octal :%d\n", oct);
printf("Hexadecimal :%s", hex);
return 0;
}