运算符优先级从小到大排序依次为:条件运算符、逻辑运算符、位运算符、关系运算符、数字运算符、括号运算符。
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
不足之处,敬请斧正!
转载请说明出处!
路漫漫其修远兮,吾将上下而求索。