每天学一点Excel2010 (103)——学做进制转换器(2)

每天学一点Excel2010 (103)——学做进制转换器(2)16)接上期,看看有啥变化?基数可以填写。逐位提取也可用。提出的字符要使用lookup之类的函数将字符转换成数字,比如A=10,F=15。不知道

欢迎大家来到IT世界,在知识的湖畔探索吧!

16)接上期,看看有啥变化?

  • 基数可以填写。
  • 逐位提取也可用。
  • 提出的字符要使用lookup之类的函数将字符转换成数字,比如A=10,F=15。

不知道自己动手试试16进制的没有?自行摸索学东西才印象深。

每天学一点Excel2010 (103)——学做进制转换器(2)

17)把基数改为16,E2、E3的函数改成hex2dec,前半部分只对不用A~F的16进制起作用。

每天学一点Excel2010 (103)——学做进制转换器(2)

16进制转十进制

18)后半部分对A~F的16进制也起作用,按照思路补全前半部分看看结果相同吗?

每天学一点Excel2010 (103)——学做进制转换器(2)

16进制转10进制

19)还是先把我的公式写上吧!

每天学一点Excel2010 (103)——学做进制转换器(2)

加上容错

20)再加上容错!这是不想增加中间的辅助单元格的做法,所以公式老长,是我目前写的最长的公式。推荐多利用辅助单元格,可以将一个复杂的计算分解,便于分步编写和差错。

21)60进制可以采用0~9,25个大写字母,25个小写字母编一个。工作量更大了,但用于加密效果应该不错。为了防止自己被密住,下面看一下十进制怎么变成其他进制,有了十进制做桥梁,所有进制之间就都可以相互转化了。

每天学一点Excel2010 (103)——学做进制转换器(2)

辗转相除

22)新建一个工作表,A1单元格作为输入的十进制数,B2单元格输入基数。我们利用除基数取余法进行进制转换。在A2单元格输入“=int(A1/$B$1)”,向下填充。

每天学一点Excel2010 (103)——学做进制转换器(2)

辗转取余

23)在B2单元格输入公式“=mod(A1,$B$1)”,向下填充。

每天学一点Excel2010 (103)——学做进制转换器(2)

10进制转2进制

24)在C1单元格输入concatenate函数,将文本依次串接起来,标准的16位2进制。

每天学一点Excel2010 (103)——学做进制转换器(2)

随便输入数值

25)随便输个数值,比如10922,用前面做的二进制到十进制转换器验证一下结果。

每天学一点Excel2010 (103)——学做进制转换器(2)

26)把B1的基数改成8,用oct2dec函数验证一下,不过得删掉几个前导0。

每天学一点Excel2010 (103)——学做进制转换器(2)

十进制转16进制

27)把B1的基数改成16,因为16进制中10=A,我们任选一个单元格输入“=hex2dec(“2AAA”)”,结果为10922,正确。

每天学一点Excel2010 (103)——学做进制转换器(2)

0~15转换成0~F

28)现在我们要反过来把十进制的0~15,变成十六进制的0~F,输入上图的公式,向下填充。现在16进制转换器完成了。

每天学一点Excel2010 (103)——学做进制转换器(2)

10~16进制转换

29)目前这个转换器对16进制以下的都有效,你可以验证一下。

30)再增加进制数,需要增加对应翻译的字符数即可。

每天学一点Excel2010 (103)——学做进制转换器(2)

利用现成公式

31)可不可以利用Excel自带函数呢?当然可以,16是2的4次方,我们一次提取一位16进制数就相当于4位二进制数。在C2单元格输入“=hexbin(B2,4)”,向下填充。然后把二进制数使用concatenate函数连接起来。我们可以把参数4放在一个单元格,把16用2^4表示。1位8进制相当于3位2进制,同样也可以加快转换速度。

每天学一点Excel2010 (103)——学做进制转换器(2)

利用现成函数加速并大幅度扩展位数。

32)同理对于十进制像十六进制的转换,我们也可以用这样的方法,最多一次可以进行9位,我们举个5位的例子,将B1单元格改为“=16^5”,B2单元格不查询了改成“=mod(A1,$B$1)”向下填充,C2单元格改成“=dec2hex(B2,5)”。大幅度扩展了可转换的位数。

每天学一点Excel2010 (103)——学做进制转换器(2)

33)因为自带函数不算符号位最多9位,我们把1~9的单元格有效性放在D1单元格,将B1单元格改为“=16^D1”,C2单元格改成“=dec2hex(B2,$D$2)”,更改D3的值看一下结果看看。唯一的缺点是D1的位置选的不好,输入参数9的话C列太宽了。

每天学一点Excel2010 (103)——学做进制转换器(2)

十进制转16进制

34)D1输入1,对于固定的十六进制数字可以不用lookup函数,直接使用。

每天学一点Excel2010 (103)——学做进制转换器(2)

choose函数

35)对于其他进制,对于数值直接使用choose函数转换更加简洁,在C2输入上图中公式。D1为1时,可以用于所有进制,只要在choose函数后面继续增加字符即可,自己来个60进制的吧,可以用来加密,把数字或字母混合体转换成一个别人不知道的进制,加以混淆。不信输入你的手机号或者出生日期看看变成什么啦!

36)正数转换基本就这样了。下面讲一下负数转换的思路,不再往下讲了,自己动手试试。

  • 符号位位置和位数固定,左边取第1位判断正负,8进制和16进制要将第1位变成2进制再取左边第1位。
  • 补码可以使用查询,顺序倒过来就行。
每天学一点Excel2010 (103)——学做进制转换器(2)

输入负数

37)不用动手试了,神奇的事情发生了,输入一个负数看看,依然成立,看来计算机内的各种计算就是用二进制计算的,齐活了。但我实在无法解释。例如-4除以16,结果为-1,余12,就是说-4要借上12除16等于-1。

(待续)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/34757.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信