首頁 > 軟體

Linux工具之bc計算器進位制的轉換

2020-06-16 17:09:54

bc是Linux下的命令列式的計算器。 題目雖然叫任意進位制,但是因為bc的限制,輸入進位制是2~16範圍;輸出進位制是2~999範圍。這與常見計算器的進位制範圍是一致的,比如windows計算器最高也只能處理16進位制輸入資料。

一、bc計算器的使用

  1. bc計算器預設輸入、輸出都為10進位制。

    [root@CentOS6 ~]# bc                                  #開啟bc計算器
    bc 1.06.95
    Copyright 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    88*123                                                #計算 88*123
    10824                                                 #計算器輸出結果
    #
    #
    123+65*2-100                                          #計算123+65*2-100
    153                                                   #計算器輸出結果
  2. bc計算器進位制轉換

    [root@centos6 ~]# bc
    obase=16                                        #設定輸出為16進位制
    ibase=2                                         #設定輸入為2進位制
    1111111111111100011010                          #輸入2進位制數
    3FFF1A                                          #轉換為16進位制

二、通過管道運算與進位制轉換

  1. 這裡使用的管道可以簡單的理解為將echo "1+2"傳送給 bc計算器

    [root@centos6 ~]# echo "1+1" | bc               #將1+1傳送給bc計算器
    2
    [root@centos6 ~]#
    [root@centos6 ~]# echo "5*10-1" | bc            #將5*10-1傳送給bc計算器
    49
  2. 雙引號、單引號、反單引號的使用

    [root@centos6 ~]# echo "123+123" | bc
    246
    [root@centos6 ~]# echo '111+111'
    111+111
    [root@centos6 ~]# echo '111+111' | bc
    222
    [root@centos6 ~]# echo `111+111` | bc   
    -bash: 111+111: command not found
    [root@centos6 ~]# echo "`echo 123`+10" | bc
    133

三、使用中遇到的問題

  1. 先設定obase在設定ibase,計算器正常。

    [root@centos6 ~]# bc
    bc 1.06.95
    Copyright 2006 Free Software Foundation,
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    obase=16
    ibase=2
    1111111111111100011010
    3FFF1A
  2. 先設定ibase在設定obase,計算器輸出不正常。

    [root@centos6 ~]# bc
    bc 1.06.95
    Copyright  2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    ibase=2
    obase=16
    1111111111111100011010
    21220002012002
  3. 先設定obase在設定ibase,計算輸出正常
    修改obase後計算輸出不正常

    [root@centos6 ~]# bc
    bc 1.06.95
    Copyright  2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    obase=16
    ibase=2
    1111111111111100011010
    3FFF1A
    obase=10
    1111111111111100011010
    1111111111111100011010
  4. 先設定obase在設定ibase正常,ibase與obase互換輸出不正常。

    [root@centos6 ~]# bc
    bc 1.06.95
    Copyright  2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    obase=16
    ibase=2
    1111111111111100011010
    3FFF1A
    obase=2
    ibase=16
    3FFF1A
    1011010101
  5. 使用管道時同樣只能先給obase賦值

    [root@centos6 ~]# echo "ibase=2;obase=16;11101" | bc
    1002
    [root@centos6 ~]# echo "obase=16;ibase=2;11101" | bc
    1D

結論?????

在bc計算器中,obase與ibase的賦值有先後順序。
且在計算過程中ibase與obase只能賦值一次。

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-07/145953.htm


IT145.com E-mail:sddin#qq.com