在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)
上一篇 2017-11-14 00:41
下一篇 2017-11-14 15:08

相关推荐

  • http特性

    一、何为http 什么是http?http是Hyper Text Mark Language的缩写,超文本标记语言。Apache下的httpd是实现了这一功能的开源软件。 二、http特性 http特性1:持久连接及MPM参数设置 KeepAlive {On|Off} #是否启动持久连接 MaxKeepAliveRequests 100 …

    Linux干货 2015-10-15
  • 开源堡垒机-01-JumpServer的安装

    前段时间曾经用过JumpServer帮助一个客户完成了他的关于堡垒机的需求,由于当时赶进度,没来得及将整个过程记录和完善,现在抽时间慢慢整理下。 1)JumpServer的介绍 Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。 支持常见系统: Cent…

    Linux干货 2016-07-22
  • Linux的任务计划

    Linux的任务计划         我们在使用系统的过程中,经常需要在以后的某个时间点执行一个任务,而我们又不在机器旁边的时候,比如在半夜时服务器访问的用户很少,宽带资源很充足的时候,要去镜像软件包、重启服务器(虽然Linux很稳定)等,或者需要服务器在每天的特定时间去备份数据…

    2017-03-19
  • Linux的发行版和它们区别跟联系

    linux的主要发行版有Debian,Slackware,RedHat三个大系列    Debian 最早由Ian Murdock于1993年创建。可以算是迄今为止,最遵循GNU规范的Linux系统。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发…

    Linux干货 2017-07-02
  • Shell——Linux基本命令(2)

    1.Shell Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行. shell也被称为LINUX的命令解释器(commandinterpreter). vshell是一种高级程序设计语言. 2.bash shell GNUBourne-AgainShell(bash)是GNU计划中重要的工…

    2017-07-13
  • Shell脚本基础练习

    脚本编程能力是作为运维工程师不可或缺的一项基本技能,各种系统的运维,如果完全靠命令行一条一条命令来执行,工作效率可想而知,而脚本却可以将完成一定功能的各个命令依据一定的流程控制,逻辑判断去完成某种功能,提升工作效率。学习shell脚本,光学习理论是远远不够的,所以在学习中要多多练习,下面就看一些关于shell脚本基础的练习 (1) 编写脚本/root/bin…

    2017-08-05