Monday, November 8, 2010

Decimal to Hexadecimal. Binary to Decimal

Teaching my brother decimal to hexadecimal, binary to decimal

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
#include <stdio.h>
#include <string.h>
 
 
void IntToHex(unsigned int n, char hexDigitOutput[])
{
 char hexTable[] = "0123456789ABCDEF";
 int rem;
 int index;
  
 memset(hexDigitOutput, '0', 8);
 hexDigitOutput[8] = 0;
  
 index = 7;
 while (n > 0)
 {
  rem = n % 16;
  n = n / 16;
 
  hexDigitOutput[index] = hexTable[rem];
   
  --index; 
 }
  
}
 
int BinaryToDec(char *bin)
{
 int len;
 int output;
 int n2;
  
 len = strlen(bin);
 output = 0;
 n2 = 1;
  
 while(--len >= 0)
 {
  output += n2 * (bin[len] - '0');
   
  n2 <<= 1;  
 }
  
 return output;
 
}
 
 
int main (int argc, char *argv[])
{
  
 int i;
 char output[9];
  
 char binary[33];
  
  
 printf ("Hello world!\n");
  
 for(i = 0; i <= 32; ++i)
 {
  IntToHex(i, output);
  printf("\nI: %d  Hex: %s", i, output);
 }
  
  
 strcpy(binary, "1101");
 printf("\nBinary: %s Decimal: %d", binary, BinaryToDec(binary));
  
 return 0;
}

Hello world!

I: 0  Hex: 00000000
I: 1  Hex: 00000001
I: 2  Hex: 00000002
I: 3  Hex: 00000003
I: 4  Hex: 00000004
I: 5  Hex: 00000005
I: 6  Hex: 00000006
I: 7  Hex: 00000007
I: 8  Hex: 00000008
I: 9  Hex: 00000009
I: 10  Hex: 0000000A
I: 11  Hex: 0000000B
I: 12  Hex: 0000000C
I: 13  Hex: 0000000D
I: 14  Hex: 0000000E
I: 15  Hex: 0000000F
I: 16  Hex: 00000010
I: 17  Hex: 00000011
I: 18  Hex: 00000012
I: 19  Hex: 00000013
I: 20  Hex: 00000014
I: 21  Hex: 00000015
I: 22  Hex: 00000016
I: 23  Hex: 00000017
I: 24  Hex: 00000018
I: 25  Hex: 00000019
I: 26  Hex: 0000001A
I: 27  Hex: 0000001B
I: 28  Hex: 0000001C
I: 29  Hex: 0000001D
I: 30  Hex: 0000001E
I: 31  Hex: 0000001F
I: 32  Hex: 00000020
Binary: 1101 Decimal: 13

No comments:

Post a Comment