- vim jiecheng.sh
-
-
- #!/bin/bash
- res=1
- for i in $@
- do
- res=$((res*i))
- done
- echo $res
运行脚本计算10的阶乘
source jiecheng.sh {1..10}

二进制的最高位为符号位。0为正数,1为负数
正数的原码,补码,反码是一致的。它的补码和反码就是原码
负数的原码,反码,补码不一致。
原码-->反码:除了最高位的符号位,其他按位取反
补码:在反码的基础上+1
12:二进制 --- 0000 1100
原码 --- 0000 1100
反码 --- 0000 1100
补码 --- 0000 1100
-13:二进制 --- 0000 1101
原码 --- 1000 1101
反码 --- 1111 0010
补码 --- 1111 0011
(()):用于整数运算,在(())里面可以省略变量的$符号
let:用于整数运算,可以执行多个表达式,变量的$符号不可省略
expr:不止可以用于整数运算,使用expr时,运算符及用于计算的数字左右都至少有一个空格,否则报错;使用乘号,必须使用反斜线屏蔽其特定含义;使用expr做 计算,将一个未知的变量和一个已知的整数相加,看返回码是否为 0,如果为0就认为做加法的变量为整数,否则就不是整数。
bc:可以计算小数,相当于Linux中的计算器
$[]:用于整数运算
- ((data=1+2));echo $data ---- 将1+2的结果赋值给data
- 3
-
- ((data2=data+10));echo $data2 ---使用(())
- 13
-
-
- let data2=$data+10;echo $data2 --- 使用let
- 13
-
-
- data2=`expr $data + 10` ;echo $data2 --- 使用expr
- 13
-
-
- echo "`echo $data`+10" | bc --- 使用bc
- 13
-
-
- data2=$[data+10];echo $data2 --- 使用$[]
- 13