1.计算10的阶乘
[root@localhost ~]# echo `seq -s "*" 10` = `seq -s "*" 10 | bc` 1*2*3*4*5*6*7*8*9*10 = 3628800
2.12,-13的原码,补码和反码
原码、反码、补码的概念
原码:最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。
反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。
补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变
例如12 12=2^3+2^2 1100加上符号位 原码 01100 反码 01100 补码 01100 -13 13=1101 -13=-1101 原码 1 1101 反码 1 0010 补码 1 0011
3.计算 1+2的结果,并将值赋给变量data, 然后计算 data+10的值,赋值给data2(要求:分别使用(()), let, exp,bc和 $[]实现)
1、(())
[root@localhost ~]# ((data=1+2)) [root@localhost ~]# echo $data 3 [root@localhost ~]# ((data2=data+10)) [root@localhost ~]# echo $data2 13 [root@localhost ~]# ((data2=$data+10)) [root@localhost ~]# echo $data2 13
2、let
[root@localhost ~]# let data=1+2 [root@localhost ~]# echo $data 3 [root@localhost ~]# let data2=$data+10 [root@localhost ~]# echo $data2 13 [root@localhost ~]# let data2=data+10 [root@localhost ~]# echo $data2 13
3、expr
[root@localhost ~]# data=`expr 1 + 2` [root@localhost ~]# echo $data 3 [root@localhost ~]# data2=`expr data + 10` expr: non-integer argument [root@localhost ~]# data2=`expr $data + 10` [root@localhost ~]# echo $data2 13
4、bc
[root@localhost ~]# data=1+2 | bc [root@localhost ~]# echo $data 3 [root@localhost ~]# data2=data+10 | bc [root@localhost ~]# echo $data2 13 [root@localhost ~]# data2=$data+10 | bc [root@localhost ~]# echo $data2 13
5、$[]
[root@localhost ~]# data=$[1+2] [root@localhost ~]# echo $data 3 [root@localhost ~]# data2=$[data+10] [root@localhost ~]# echo $data2 13 [root@localhost ~]# data2=$[$data+10] [root@localhost ~]# echo $data2 13