如何将十进制转换为十六进制?
十进制系统是大众最熟悉的数制。它是基数为10的系统,只有10个符号——0, 1, 2, 3, 4, 5, 6, 7, 8和9。而十六进制系统是计算机或数字系统中最常用的颜色表示数制。它是基数为16的系统,只有16个符号:0, 1, 2, 3, 4, 5, 6, 7, 8, 9和A, B, C, D, E, F。这些A, B, C, D, E, F分别代替两位数10, 11, 12, 13, 14, 15。
从十进制到十六进制数制的转换
有多种直接或间接方法可以将十进制数转换为十六进制数。在间接方法中,您需要将十进制数转换为其他数制(例如,二进制或八进制),然后可以使用二进制数制的组合将它转换为十六进制数,将每个八进制数字转换为二进制,然后组合并将这些转换为十六进制数。
示例——将十进制数105转换为十六进制数。
First convert it into binary or octal number, = (100)10 = (1x26+1x25+0x24+0x23+1x22+0x21+0x20)10 or (1x82+4x81+4x80)10 Because base of binary and octal are 2 and 8 respectively. = (1100100)2 or (144)8 Then convert each digit of octal number into 3 bit of binary number, then use grouping of 4 bit of binary number. = (1100100)2 or (001 100 100)2 = (110 0100)2 = (0110 0100)2 = (6 4)16 = (64)16
但是,有两种直接方法可用于将十进制数转换为十六进制数——用余数转换和用除法转换。这些方法将在下面解释。
(a) 用余数转换(对于整数部分)
这是一个直接的方法,它涉及到将要转换的数字进行除法。设十进制数为N,然后用16除这个数字,因为十六进制数制的基数是16。记下余数的值,它将是:0到15(将10, 11, 12, 13, 14, 15分别替换为A, B, C, D, E, F)。再次除以剩余的十进制数,直到它变成0,并记下每一步的余数。然后从下往上(或反向)写下余数,这将是给定十进制数的等效十六进制数。这是转换整数十进制数的过程,算法如下所示。
将十进制数作为被除数。
将此数除以16(16是十六进制的基数,因此这里是除数)。
将余数存储在一个数组中(它将是:0到15,因为除数是16,将10, 11, 12, 13, 14, 15分别替换为A, B, C, D, E, F)。
重复上述两步,直到数字大于零。
反向打印数组(这将是给定十进制数的等效十六进制数)。
请注意,被除数(这里给定的十进制数)是被除的数,除数(这里十六进制的基数,即16)是被除数除以的数,商(剩余的十进制数)是除法的结果。
示例——将十进制数540转换为十六进制数。
由于给定的数字是十进制整数,因此使用上述算法用16进行短除法并求余数。
除法 | 余数 (R) |
---|---|
540 / 16 = 33 | 12 = C |
33 / 16 = 2 | 1 |
2 / 16 = 0 | 2 |
0 / 16 = 0 | 0 |
现在,从下往上(反向)写下余数,这将是021C(或仅21C),它是十进制整数540的等效十六进制数。
但是上述方法不能转换混合数(带有整数和小数部分的数)的十六进制数的小数部分。对于十进制小数部分,方法如下所示。
(b) 用余数转换(对于小数部分)
设十进制小数部分为M,然后用16乘以这个数字,因为十六进制数制的基数是16。记下整数部分的值,它将是-0到15(将10, 11, 12, 13, 14, 15分别替换为A, B, C, D, E, F)。再次乘以剩余的十进制小数,直到它变成0,并记下每一步结果的整数部分。然后写下记下的整数部分的结果,这将是给定十进制数的等效小数十六进制数。这是转换小数十进制数的过程,算法如下所示。
将十进制数作为被乘数。
将此数乘以16(16是十六进制的基数,因此这里是乘数)。
将结果的整数部分的值存储在一个数组中(它将是:0到15,因为乘数是16,将10, 11, 12, 13, 14, 15分别替换为A, B, C, D, E, F)。
重复上述两步,直到数字变成零。
打印数组(这将是给定十进制小数的等效小数十六进制数)。
请注意,被乘数(这里的十进制小数)是被乘数(这里的十六进制基数,即16)乘以的数。
示例——将十进制小数0.06640625转换为十六进制数。
由于给定的数字是十进制小数,因此使用上述算法用16进行短乘法并求整数部分。
乘法 | 结果整数部分 |
---|---|
0.06640625 x 16=1.0625 | 1 |
0.0625 x 16 =1.0 | 1 |
0 x 16=0.0 | 0 |
现在,写下这些结果整数部分,这将近似为0.110,它是十进制小数0.06640625的等效十六进制小数。
用除法转换
这种方法是猜测十进制数的十六进制数。您需要绘制16的幂的表格,对于整数部分,算法如下所示。
从任何十进制数开始。
列出16的幂。
将十进制数除以16的最大幂。
找到余数。
将余数除以16的下一个幂。
重复此过程,直到找到完整的答案。
示例——将十进制数380转换为十六进制数。
根据上述算法,16的幂的表格为:
十进制 | 163=4096 | 162=256 | 161=16 | 160=1 |
十六进制数字 | 0 | 1 | 7 | C |
Divide the decimal number by the largest power of 16. = 380 / 256 = 1.484375 So 1 will be first digit or most significant bit (MSB) of hexadecimal number. Now, remainder will be, = 380 - 1256 =124 Now, divide thisremainder by the next power of 16. = 124 / 16 = 7.75 So 7 will be next digit or second most significant bit (MSB) of hexadecimal number. Now, remainder will be, = 124 - 716 = 12 Because remainder 12(= C) is less than base 16, so C(=12) will be ast (least significant) bit of required hexadecimal number. Therefore, 17C will be equivalent hexadecimal number of given decimal number 380.