Linux之bc命令使用详解

来源:百度文库 编辑:神马文学网 时间:2024/05/01 08:30:40

# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

(interrupt) use quit to exit.


(interrupt) use quit to exit.

quit
#

--在bc上常用的运算符有:
+ 加法
- 减法
* 乘法
/ 除法(在没有设置scale精确度时候,自动取整)
^ 指数
% 求余数(取模)

在bc上还可以使用
++ 变量          
          -- 变量
          变量 ++ 
          变量 --

# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+2
3
234+23/2*3
267
25^3
15625
100%4
0
100%23
8
quit


# bc 
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
scale=2 /*scale=number*/
11/4
2.75
11/3
3.66
quit

说明:scale=2 是设置小数精确度。/*备注部分*/


bc还可以运行一个带有复杂运算的程序文件(这属于bc的一个扩展属性),如:
The following is code that uses the extended features of bc to   implement 
a   simple program for calculating checkbook balances. 
This program is best kept in a file so that it can be used many times   without
having to retype it at every use.

--使用vi建立一个test运算程序:
# vi test

scale=2
print ""Check book program!"
print " Remember,deposits are negative transaction."

print " Initial balance?";bal=read()
bal /= 1
print ""n"
while (1){
       "current balance = ";bal
       "transaction?";trans =read()
       if(trans == 0) break;
       bal -= trans
       bal /= 1
}
~
~
~
"test" [New] 14L, 268C written                               
# ls
--计算结果:

# bc "test
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

Check book program!
Remember,deposits are negative transaction.
Initial balance?560

current balance = 560.00
transaction?400
current balance = 160.00
transaction?100
current balance = 60.00
transaction?0
quit


还可以这么用:

   将10进制数转换成16进制数

  比如转换 65535 为 16进制

  echo 'obase=16; 65535' | bc

  得到 FFFF

  printf 是挺方便的,不过我还是喜欢 bc ,因为它能转换任意进制,比如英制的12进制,

  你也可以炮制并不存在的进制。比如

  echo 'obase=37; 65535' | bc

  就是37进制啦,哈哈,它等于 01 10 32 08

  'obase=37; 65535' 都传递给程序 bc 告诉它,我要求现在 output base 为 37 ,那 65535 为多少呢?

  另外,还有 ibase 表示 input base,比如

  echo 'obase=16; ibase=8; 177777' | bc

  可以直接将八进制的数177777变成十六进制,也是FFFF