欢迎大家来到IT世界,在知识的湖畔探索吧!
16)接上期,看看有啥变化?
- 基数可以填写。
- 逐位提取也可用。
- 提出的字符要使用lookup之类的函数将字符转换成数字,比如A=10,F=15。
不知道自己动手试试16进制的没有?自行摸索学东西才印象深。
17)把基数改为16,E2、E3的函数改成hex2dec,前半部分只对不用A~F的16进制起作用。
18)后半部分对A~F的16进制也起作用,按照思路补全前半部分看看结果相同吗?
19)还是先把我的公式写上吧!
20)再加上容错!这是不想增加中间的辅助单元格的做法,所以公式老长,是我目前写的最长的公式。推荐多利用辅助单元格,可以将一个复杂的计算分解,便于分步编写和差错。
21)60进制可以采用0~9,25个大写字母,25个小写字母编一个。工作量更大了,但用于加密效果应该不错。为了防止自己被密住,下面看一下十进制怎么变成其他进制,有了十进制做桥梁,所有进制之间就都可以相互转化了。
22)新建一个工作表,A1单元格作为输入的十进制数,B2单元格输入基数。我们利用除基数取余法进行进制转换。在A2单元格输入“=int(A1/$B$1)”,向下填充。
23)在B2单元格输入公式“=mod(A1,$B$1)”,向下填充。
24)在C1单元格输入concatenate函数,将文本依次串接起来,标准的16位2进制。
25)随便输个数值,比如10922,用前面做的二进制到十进制转换器验证一下结果。
26)把B1的基数改成8,用oct2dec函数验证一下,不过得删掉几个前导0。
27)把B1的基数改成16,因为16进制中10=A,我们任选一个单元格输入“=hex2dec(“2AAA”)”,结果为10922,正确。
28)现在我们要反过来把十进制的0~15,变成十六进制的0~F,输入上图的公式,向下填充。现在16进制转换器完成了。
29)目前这个转换器对16进制以下的都有效,你可以验证一下。
30)再增加进制数,需要增加对应翻译的字符数即可。
31)可不可以利用Excel自带函数呢?当然可以,16是2的4次方,我们一次提取一位16进制数就相当于4位二进制数。在C2单元格输入“=hexbin(B2,4)”,向下填充。然后把二进制数使用concatenate函数连接起来。我们可以把参数4放在一个单元格,把16用2^4表示。1位8进制相当于3位2进制,同样也可以加快转换速度。
32)同理对于十进制像十六进制的转换,我们也可以用这样的方法,最多一次可以进行9位,我们举个5位的例子,将B1单元格改为“=16^5”,B2单元格不查询了改成“=mod(A1,$B$1)”向下填充,C2单元格改成“=dec2hex(B2,5)”。大幅度扩展了可转换的位数。
33)因为自带函数不算符号位最多9位,我们把1~9的单元格有效性放在D1单元格,将B1单元格改为“=16^D1”,C2单元格改成“=dec2hex(B2,$D$2)”,更改D3的值看一下结果看看。唯一的缺点是D1的位置选的不好,输入参数9的话C列太宽了。
34)D1输入1,对于固定的十六进制数字可以不用lookup函数,直接使用。
35)对于其他进制,对于数值直接使用choose函数转换更加简洁,在C2输入上图中公式。D1为1时,可以用于所有进制,只要在choose函数后面继续增加字符即可,自己来个60进制的吧,可以用来加密,把数字或字母混合体转换成一个别人不知道的进制,加以混淆。不信输入你的手机号或者出生日期看看变成什么啦!
36)正数转换基本就这样了。下面讲一下负数转换的思路,不再往下讲了,自己动手试试。
- 符号位位置和位数固定,左边取第1位判断正负,8进制和16进制要将第1位变成2进制再取左边第1位。
- 补码可以使用查询,顺序倒过来就行。
37)不用动手试了,神奇的事情发生了,输入一个负数看看,依然成立,看来计算机内的各种计算就是用二进制计算的,齐活了。但我实在无法解释。例如-4除以16,结果为-1,余12,就是说-4要借上12除16等于-1。
(待续)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/34757.html