bc是Linux下的命令行式的計(jì)算器。 題目雖然叫任意進(jìn)制,但是因?yàn)閎c的限制,輸入進(jìn)制是216范圍;輸出進(jìn)制是2999范圍。這與常見計(jì)算器的進(jìn)制范圍是一致的,比如windows計(jì)算器最高也只能處理16進(jìn)制輸入數(shù)據(jù)。
一、bc計(jì)算器的使用
- bc計(jì)算器默認(rèn)輸入、輸出都為10進(jìn)制。
[root@centos6 ~]# bc #打開bc計(jì)算器
bc 1.06.95
Copyright 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
88*123 #計(jì)算 88*123
10824 #計(jì)算器輸出結(jié)果
#
#
123+65*2-100 #計(jì)算123+65*2-100
153 #計(jì)算器輸出結(jié)果
- bc計(jì)算器進(jìn)制轉(zhuǎn)換
[root@centos6 ~]# bc
obase=16 #設(shè)置輸出為16進(jìn)制
ibase=2 #設(shè)置輸入為2進(jìn)制
1111111111111100011010 #輸入2進(jìn)制數(shù)
3FFF1A #轉(zhuǎn)換為16進(jìn)制
二、通過(guò)管道運(yùn)算與進(jìn)制轉(zhuǎn)換
- 這里使用的管道可以簡(jiǎn)單的理解為將
echo "1+2"發(fā)送給 bc計(jì)算器
[root@centos6 ~]# echo "1+1" | bc #將1+1發(fā)送給bc計(jì)算器
2
[root@centos6 ~]#
[root@centos6 ~]# echo "5*10-1" | bc #將5*10-1發(fā)送給bc計(jì)算器
49
- 雙引號(hào)、單引號(hào)、反單引號(hào)的使用
[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
三、使用中遇到的問(wèn)題
- 先設(shè)置obase在設(shè)置ibase,計(jì)算器正常。
[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,計(jì)算器輸出不正常。
[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,計(jì)算輸出正常
修改obase后計(jì)算輸出不正常
[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
- 使用管道時(shí)同樣只能先給obase賦值
[root@centos6 ~]# echo "ibase=2;obase=16;11101" | bc
1002
[root@centos6 ~]# echo "obase=16;ibase=2;11101" | bc
1D
結(jié)論
在bc計(jì)算器中,obase與ibase的賦值有先后順序。
且在計(jì)算過(guò)程中ibase與obase只能賦值一次。