98 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # hexadecimal
 | |
| 
 | |
| the hexadecimal numeral system differs from the decimal system by having 16 digits rather than 10:
 | |
| 
 | |
| ```
 | |
| hex| decimal
 | |
| ---|---------
 | |
|  0 | 0
 | |
|  1 | 1
 | |
|  2 | 2
 | |
|  3 | 3
 | |
|  4 | 4
 | |
|  5 | 5
 | |
|  6 | 6
 | |
|  7 | 7
 | |
|  8 | 8
 | |
|  9 | 9
 | |
|  A | 10
 | |
|  B | 11
 | |
|  C | 12
 | |
|  D | 13
 | |
|  E | 14
 | |
|  F | 15
 | |
| ```
 | |
| 
 | |
| when there is more than one digit, these are multiplied by 16, 256, 4096 and so on rather than 10, 100, 1000:
 | |
| 
 | |
| ```
 | |
| hex | decimal
 | |
| ----|---------
 | |
|  00 | 0
 | |
|  04 | 4
 | |
|  08 | 8
 | |
|  0F | 15
 | |
|  10 | 16
 | |
|  11 | 17
 | |
|  12 | 18
 | |
|  13 | 19
 | |
|  20 | 32
 | |
|  30 | 48
 | |
|  40 | 64
 | |
| ```
 | |
| 
 | |
| # hex to decimal
 | |
| 
 | |
| for example, take hexadecimal number `AA`:
 | |
| 
 | |
| ```
 | |
|           2nd digit -\   /- 1st digit
 | |
|                      A   A
 | |
|  16^1*10 = 16*10 = 160 + 10 = 170
 | |
| ```
 | |
| 
 | |
| now for hexadecimal number `4C5F`:
 | |
| 
 | |
| ```
 | |
| 
 | |
|       3rd digit -\    /- 2nd digit
 | |
|  4th digit -\    |    |    /- 1st digit
 | |
|             4    C    5    F
 | |
|             |    |    |    |
 | |
|             |    |    |    15 =        15 =    15 +
 | |
|             |    |    \16^1*5 =   16 * 5  =    80
 | |
|             |    \--- 16^2*12 =  256 * 12 =  3072
 | |
|             \--------- 16^3*4 = 4096 * 4  = 16384
 | |
|                                            -------
 | |
|                                           = 19551
 | |
| ```
 | |
| 
 | |
| # decimal to hex
 | |
| 
 | |
| if it's less than 16, just memorize the table at the top of this document.
 | |
| 
 | |
| otherwise find the power of 16 that is closest to the number you want to convert, but no larger than the number.
 | |
| then divide, and take the remainder.
 | |
| divide the remainder with the previous power of 16, until the divider is 1.
 | |
| 
 | |
| for example, for the decimal number `220`:
 | |
| 
 | |
| ```
 | |
| 220 ÷ 16 = 13 (r = 12)    D
 | |
|  12 ÷  1 = 12 (stop here) C
 | |
| 
 | |
| = DC
 | |
| ```
 | |
| 
 | |
| now for decimal number `69420`:
 | |
| 
 | |
| ```
 | |
| 69420 ÷ 65536 =  1 (r = 3884)  1
 | |
|  3884 ÷  4096 =  0 (r = 3884)  0
 | |
|  3884 ÷   256 = 15 (r =   44)  F
 | |
|    44 ÷    16 =  2 (r =   12)  2
 | |
|    12 ÷     1 = 12 (stop here) C
 | |
| 
 | |
| = 10F2C
 | |
| ```
 | 
