想学会怎么把那些平常我们用的数字(十进制)变成计算机和编程里更常见的十六进制吗?别怕,这事儿听起来好像很专业,其实特别简单,就像玩一个数字小游戏一样,咱们不用管那些复杂的术语,就用最直白的话,一步步把它搞明白。
第一步:先搞清楚“十六进制”到底是个啥?
我们平时数数,用的是0到9这十个数字,满十就进一位,这叫“十进制”,比如数字10,就是9(个位最大)之后,进到十位变成1,个位归零。
那“十六进制”呢?顾名思义,就是满十六才进一位,但问题来了,我们只有0-9十个数字符号,十六进制需要十六个不同的符号来表示一位数,怎么办呢?很简单,把英文字母的前六位A、B、C、D、E、F借来用!它们分别代表10、11、12、13、14、15。
十六进制的所有“一位数”符号就是:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F。
记住这个对应关系是基础:
十六进制的16怎么表示呢?就像十进制的10一样,它需要进一位了:16(十进制)就等于10(十六进制),这里的“10”可不是“十”,而是“十六”,这一点一定要分清。
第二步:核心武器——“除以16,看余数”
把十进制转成十六进制,最靠谱、最通用的方法就是“除16取余法”,别被名字吓到,操作起来非常简单,我们就拿一个具体的数字来试,比如把255这个数转换成十六进制。
操作口诀是:不断地除以16,每次都记下余数,直到商变成0为止,把余数从下往上倒着排列,就是答案。
我们来一步步操作:
第一除:用255除以16。
第二除:现在用上一步的商(15)继续除以16。
停止检查:上一步的商已经是0了,我们的任务完成。
倒序排列:我们记下的余数顺序是:第一次的F,第二次的F,把它们从最后得到的余数往最先得到的余数 排列,也就是从下往上读:F F。
十进制数 255 的十六进制就是 FF,你可以把它读作“F F”。
是不是有点感觉了?我们再试一个数字巩固一下,比如300。
第一除:300 ÷ 16 = 18 (因为16*18=288),余数是 300 - 288 = 12。
第二除:用商18继续除以16,18 ÷ 16 = 1,余数是 2。
余数2还是2。
第三除:用商1继续除以16,1 ÷ 16 = 0,余数就是 1。
停止并倒序排列:余数顺序是(从第一次到最后一次):C, 2, 1,从下往上读(从最后一次的余数开始):1 2 C。
十进制数 300 的十六进制就是 12C。
第三步:对付小数的技巧——“乘以16,取整数”
那如果数字带小数点儿怎么办?比如把125转成十六进制,这需要分两步走:整数部分和小数部分分开处理。
整数部分(123):用刚才的“除16取余法”。
小数部分(0.125):用“乘16取整法”,口诀是:不断地用小数部分乘以16,每次都记下结果的整数部分,然后用新的小数部分继续乘,直到小数部分变成0或者达到你需要的精度为止,把整数部分从上往下排列。
合并:把整数部分和小数部分合起来,中间用小数点连接。125 的十六进制就是 7B.2。
我们再快速试一个不完美的小数,比如8,我们只算到小数点后三位:
0.8的十六进制约等于 CCC...,可以写成 CCC(保留三位)。
第四步:一些实用窍门和常见数字
其实转换本身并不难,核心就是那两步:“整数除16取余倒排,小数乘16取整顺排”,只要静下心来算一算,你马上就能掌握这个有用的技能,你就可以随便写个数字,试试看它能变成什么样的十六进制吧!
