十进制转化为十六进制转换器(十进制转十六进制在线转换器)

216 学做进制转换器

前面学习了12个进制转换函数,其实明白了进制转换的道理我们可以自行制作一个进制转换器。下面由简至繁学做一个,先转成我们最熟悉的十进制,FOLLOW ME!

1)新建一个工作表,在A1单元格输入二进制的基数2,添加1个背景色。B1单元格将来用于输入2进制数,添加一个背景颜色,我们就认为是双字节数吧,最多16位,先输入数字1234567890,调试用,将单元格设置成文本格式后,便可以输入前置0。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

16位数字的幂

2)十进制第一位是数字乘以10^0,第二位是数字乘以10^1,依次类推。我们把16位数字的幂0~15填入A列,在A2单元格输入“=row(A1)-1”或“=row()-2”,利用填充柄将公式向下填充值A17(如果数值不变要按F9重新计算,或将“公式”选项卡的“计算选项”改为“自动”)。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

逐位提取

3)现在我们要把输入数字从右到左逐位提取出来。在B2单元格输入“=mid($B$1,len($B$1)-A2,1)”,向下填充,因为文本不足16位,所以后面的出错了,可以将B2补足16位输入1234567890ABCDEF,看看提取有错没有。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

逐位乘以基数的幂

4)现在可以在B2单元格输入一个2进制数字了,比如111。下面输入换算公式,在C2单元格输入公式“=B2*$A$1^A2”,向下填充。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

5)现在解决错误的问题,使用IF函数和iserr函数。选择B2单元格,按F2进入编辑状态,将公式修改成上图中的公式,如果公式出错就返回0,没出错就返回公式计算结果,然后向下填充。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

2进制转换成10进制

6)在C1单元格中输入公式“=sum(C2:C17)”,添加一个背景色。一个2进制到10进制的转换器雏形便完成了。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

对比结果

7)Excel自带转换函数只能转9位数字,第10位是符号位,我们在D1单元格输入公式“=bin2dec(B1)”对比一下,9位以内都没有问题,加上10位1就变负值,10位以上就无能为力了。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

8进制转换成10进制

8)现在我们把A1单元格的基数改成8,把D1单元格中的公式改成“=oct2dec(B1)”,选中C、D列将格式设置为不带小数的数值,输入数据看看,9位以内都没有问题,加上10位4~7就变负值,10位以上Excel自带函数就无能为力了。

9)把A1的基数改成10,就是10进制到10进制的转换。有兴趣的把10以内的进制都看看,转换没有问题。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

进制的数据有效性

10)下面增加数据有效性。选择A1单元格,点击“数据”选项卡,“数据工具”区域的“数据有效性”,如上图设置,使可选进制数值为2~10。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

输入文本的长度限值

11)选择B1单元格,点击“数据”选项卡,“数据工具”区域的“数据有效性”,如上图设置,避免长度超过16。

12)利用Excel自带函数可以简化计算,将1个16位2进制数分成2个8位的2进制数。在D1单元格输入“=if(len(B1)8,left(B1,len(B1)-8),0)”,在D2输入“=right(B1,8)”。使用if语句是防止不够8位时取不到数。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

利用Excel自带函数

13)在E2单元格中输入公式“=bin2dec(D2)*A1^8”,因为是左面8位,要乘以基数的8次方。在E3单元格中输入公式“=bin2dec(D3)。在E1单元格输入“=sum(E2:E3)”。

十进制转化为十六进制转换器(十进制转十六进制在线转换器)

8进制转换十进制

14)把基数改为8,E2、E3的函数改成oct2dec,对8进制也起作用。

15)思考一下超过10进制的转换怎么办?

(待续)

(0)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@ZLME.COM 举报,一经查实,立刻删除。

相关推荐