运算符优先级从小到大排序依次为:条件运算符、逻辑运算符、位运算符、关系运算符、数字运算符、括号运算符。
IDL的条件运算符是“?:”,语法为
value = expr1 ? expr2 : expr3
其含义表示为,若expr1为ture,则value=expr2,反之value=expr3。
- >>expr1 = 1;
- >>expr2 = 'expr1是真'
- >>expr3 = 'expr1是假'
- >>value = expr1?expr2:expr3
- >>print,value
- expr1是真
- >>expr1 = 0;
- >>expr2 = 'expr1是真'
- >>expr3 = 'expr1是假'
- >>value = expr1?expr2:expr3
- >>print,value
- expr1是假
逻辑预算符包括:与(&&)、或(||)、非(~)。
- >>print,1&&2&&3
- 1
- >>print,1&&2&&0
- 0
- >>;注:负数表示真
- >>print,1&&-1
- 1
- >>print,0||2||0
- 1
- >>print,-1||-2||1
- 1
- >>print,~2
- 0
- >>print,~(-1)
- 0
- >>print,~(0)
- 1
位运算符是针对“位”来计算的,是需要将两个数转化为二进制,位数一一对应进行位加符“AND”、位取反符“NOT”、位或符“OR”、位异或符“XOR”。不懂原理的可以参考这个博客。
有的书称呼这个为位与,相当于与“&&”相比,只不过这个是针对位计算,或则说是需要转化为二进制来进行处理。例如:3和7位于,其中3转化为2进制数为0011,7对应的二进制数为0111,二者对应位上的数进行位加(与运算),得到0011,这个数转化为十进制数为3,因此结果为3。
- >>print,3 && 7
- 1
- >>print,3 And 7
- 3
机理与位加AND一样。例如:10和7进行位或计算,10对应的二进制数为1010,7对应的二进制数为0111,对应位进行或运算,得到1111,转化为十进制数为15,因此结果为15。
- >>print,10 OR 7
- 15
机理与位加AND一样,例如:对2进行位取反,1对应的二进制数为0000,每位数进行取反,得到1110,由于最高位为符号位(符号位0表示正,1表示负),复数在计算机中使用补码来表示,补码“110”对应的值按照“取反加1”得到1010,因此结果为-2《IDL程序设计——数据可视化与ENVI二次开发》。
- >>print, Not 1
- -2
异或可以表示成。
A XOr B = (Not A Or B) And (A OR Not B)
位异或是指在“位”上进行异或操作。
- >>print,3 Xor 7
- 4
关系运算符有:大于GT、大于等于GE、等于EQ、小于等于LE、小于LT。
大于来自英文单词Great,等于来自单词Equal、小于来自单词Less。
- >>print,3 GE 7
- 0
注:在IDL中,“>”表示去大运算,“<”表示去小运算。这个不是大于、小于!!!
-
- >>print,3 > 7 ; 取大
- 7
-
-
数字运算符有加+、减-、乘*、除/、取大>、取小<、取余Mod。
- >>print,13 Mod 7
- 6
- >>print,3 > 7
- 7
- >>print,3 < 7
- 3
在matlab中,矩阵的运算和采用的是数字运算符的方式进行运算的,然而IDL中有很大的区别。
矩阵中“+”、“-”、“*”和“/”表示对应位置的元素进行计算。注,矩阵对应元素相除时,二者维度必须一致。
- A = [[1,2,3],[4,5,6]]
- >>A
- 1 2 3
- 4 5 6
- >>B = Indgen(2,3)
- >>B
- 0 1
- 2 3
- 4 5
- >>C = A*B
- >>C
- 0 2 6
- 12 20 30
- >>D = A *A
- >>D
- 1 4 9
- 16 25 36
- >>E = A /A
- >>E
- 1 1 1
- 1 1 1
- >>F = A /B
- % Program caused arithmetic error: Integer
- divide by 0
- >>G
- 1 3 5
- 7 9 11
注:若矩阵+一个常数,则表示举证中的每个元素都加上这个常数;若矩阵*或/一个常数,则表示举证中的每个元素都*或/这个常数。
- >>H = A+1
- >>H
- 2 3 4
- 5 6 7
线性方程中的矩阵相乘(矩阵乘积,行乘以列)用“##”表示,即一个3×2(3行2列)的矩阵乘以2×3(2列3行)的矩阵,得到3×3的矩阵。
- >>A = [[1,2,3],[4,5,6]]-5
- >>A
- -4 -3 -2
- -1 0 1
- >>B = Indgen(2,3)+1
- >>B
- 1 2
- 3 4
- 5 6
- >>C = B ##A
- >>C
- -6 -3 0
- -16 -9 -2
- -26 -15 -4
注:IDL中还有一个“#”运算符,表示(列乘以行),A#B相当于B##A
- >>D = A#B
- >>D
- -6 -3 0
- -16 -9 -2
- -26 -15 -4
括号运算符有小括号“()”,也称之为圆括号,以及中括号“[]”,也称之为方括号。其中“[]”是用来表示矩阵的。注:没有大括号。
- >>Print,(3+4)*5
- 35
不足之处,敬请斧正!
转载请说明出处!
路漫漫其修远兮,吾将上下而求索。