bc是Linux下的命令行式的計算器哀澈。 題目雖然叫任意進制膨报,但是因為bc的限制束凑,輸入進制是216范圍废恋;輸出進制是2999范圍鱼鼓。這與常見計算器的進制范圍是一致的课竣,比如windows計算器最高也只能處理16進制輸入數(shù)據(jù)公条。
一、bc計算器的使用
- 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 #計算器輸出結(jié)果
#
#
123+65*2-100 #計算123+65*2-100
153 #計算器輸出結(jié)果
- bc計算器進制轉(zhuǎn)換
[root@centos6 ~]# bc
obase=16 #設(shè)置輸出為16進制
ibase=2 #設(shè)置輸入為2進制
1111111111111100011010 #輸入2進制數(shù)
3FFF1A #轉(zhuǎn)換為16進制
二、通過管道運算與進制轉(zhuǎn)換
- 這里使用的管道可以簡單的理解為將
echo "1+2"
發(fā)送給 bc計算器
[root@centos6 ~]# echo "1+1" | bc #將1+1發(fā)送給bc計算器
2
[root@centos6 ~]#
[root@centos6 ~]# echo "5*10-1" | bc #將5*10-1發(fā)送給bc計算器
49
- 雙引號路捧、單引號关霸、反單引號的使用
[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
三、使用中遇到的問題
- 先設(shè)置obase在設(shè)置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
- 先設(shè)置ibase在設(shè)置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
- 先設(shè)置obase在設(shè)置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
- 先設(shè)置obase在設(shè)置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
- 使用管道時同樣只能先給obase賦值
[root@centos6 ~]# echo "ibase=2;obase=16;11101" | bc
1002
[root@centos6 ~]# echo "obase=16;ibase=2;11101" | bc
1D
結(jié)論
在bc計算器中苍日,obase與ibase的賦值有先后順序。
且在計算過程中ibase與obase只能賦值一次窗声。