在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

相关推荐

  • Linux基础-第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 2、取出最后登录到当前系统的用户的相关信息。 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。 5、取出当前主机的…

    2018-03-19
  • linux程序包管理

    Linux程序包管理        API:Application Program Interface        ABI:Application Binary Interface           Unix-like, &n…

    Linux干货 2016-12-30
  • 访问控制列表ACL

     ACL是Access Control List的缩写,主要的目的是提供传统的owner、group、others的read、write、execute权限之外的具体权限设置。ACL可以针对单一用户、单一文件、单一目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助。使用getfacl和setfacl来设置查看acl的权限。ACL权…

    Linux干货 2016-08-07
  • N22期-第6周作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysint /tmp vim /tmp/rc.sysinit :%s@^[[:space:]]\+@#&@g 2、复制/boot/grub/grub.conf至/tmp目…

    Linux干货 2016-10-09
  • python之psutil模块

    python 安装psutil 来实现获取系统信息  # yum -y install python*pip # yum -y groupinstall “Development Tools # yum -y install python34-devel.x86_64 # pip3 install –upgrade pip # pip3 inst…

    Linux干货 2017-03-08
  • N-22-南京-修 第三周博客作业

    #1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [xujie@localhost ~]$ who | cut -d " " -f1 | sort -u #2、取出最后登录到当前系统的用户的相关信息。 [root@localhost xujie]# last -x | head -1 #3、取出…

    Linux干货 2016-09-15