如何将十进制转换为十六进制?
十进制系统是大众最熟悉的数制。它是基数为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.
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP