在Linux中使用计算器遇到的问题

进制转换的时候出现了与理解不同的结果

Linux中的计算机大家或许都用过吧,那你们有没有遇到过这样的问题呢?

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=16
obase=10
10
10

按照正常的理解ibase设置的是输入的进制数,obase设置的是输出进制数,16进制的10转换成10进制应该是16啊,为什么上面的结果却是10呢?很明显的跟正确的结果不一样,也就是说这样她输出的结果不对,这肯定不是计算器出毛病了,但是为什么它输出的结果不对呢,于是我还试了试别的别进制转换:

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=16
obase=2
10
10000

上面的执行结果看看明显是对的啊,那为什么我第一次16进制转换成10进制的结果却不对我们想要的结果呢?我问了问度娘,发现有人跟我遇到了同样的问题,但是他的回答:把obase写在前面ibase写在后面,如果位置调换了就会出一系列问题,我赶紧试了一下:

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
obase=10
ibase=16
10
16

哇~ 说的果然是对的,你这样写还要前面的obase干嘛,不是多此一举吗?计算器默认的输入输出进制就是十进制。可是为什么先设置ibase=16在设置obase=10得到的结果就不是我们想要的答案呢?于是我又换了把obase的值改了一下,又试了一遍:

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.                                                                                                                      ibase=16
obase=A
10
16

是不是发现了什么?都知道A是在16进制中表示的是10进制中的10,而10在16进制中是10进制中的16,这下是不是明白了呢?之所以我们设置ibase=16 obase=10的时候输出的结果不是我们想要的,是因为ibase=16 下面的obase的值被当做是16进制中的10,也就是10进制中的16,输入的是十六进制数,输出的也是十六进制数,所以得到的结果不是我们想要的了。

还是再验证一下吧:我们把八进制转成十进制先设置ibase=8,obase=10看看是什么样的呢?

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=8
obase=10
10
10

八进制中的10是8,输入输出都是8进制所以结果都一样;八进制中的12是十进制中的10,我们把obase改成12是不是就是转成十进制了呢?

[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
ibase=8
obase=12
10
8

上面的结果显示是对的,你们是不是明白了呢?不明白的请留言!

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88395

(1)
ChaogGeChaogGe
上一篇 2017-11-14
下一篇 2017-11-14

相关推荐

  • 每日一练–8.10 脚本

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中 3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空…

    Linux干货 2016-08-15
  • 逻辑卷

    §·逻辑卷管理器LVM介绍 ※·LVM逻辑卷的简单描述 lvm(logical volume manager 逻辑卷管理器)的可以弹性的调整文件系统的容量,支持任何块设备,需要使用dm模块:device mapper设备映射,将一个或多个底层设备组织成一个逻辑设备的模块。 lvm的重点在于弹性的调整文件系统的容量,而并非在于数据的存储效率及安全上面…

    Linux干货 2016-08-30
  • Linux三剑客之grep使用入门指南

    Linux的grep是一个具有强大功能的文本搜索工具,正确的学习和使用,能很大程度上提高工作效率,减轻运维工作所面临的压力。

    2017-09-09
  • grep、egrep正则表达式之初窥门径

    何谓正则表达式 正则表达式,又称正规表示法、常规表示法(Regular Expression,在代码中常简写为regex、regexp或RE),是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的…

    2015-03-19
  • shell 脚本中数组的总结

    描述:   变量是存储单个元素的内存空间,而数组是多个变量的集合,是一个连续的空间;但整个数组只能有 的名字。   数组内的数据都有指定的索引,从而找到数组内所指定的数据。索引的编号是从0开始的,依次递增(0,1,2,3,…),这种方式叫数值索引。格式为:数组名[索引];${ARRAY_NAME[INDEX]}。索引也支持自定…

    Linux干货 2016-08-29
  • Linux basics–part2

    一、Linux上的文件管理类命令,及常用的使用方法 1.ls:list, 列出指定目录下的内容 常用选项: ls: list, 列出指定目录下的内容 ls [OPTION]… [FILE]… -a: 显示所有文件,包括隐藏文件; -A:显示除.和..之外的所有文件; -l: –long, 长格式列表,即显示文件的详细属性信…

    Linux干货 2017-07-14