# 运算符和基本运算


算术、关系和逻辑运算符、特殊字符、模除法与舍入、幂、对数和平方根
Syslab 使用许多常见运算符和特殊字符,您可以使用它们对任何类型的数组执行简单的运算。

# 运算符

基础运算符号

# 算术运算符

以下算术运算符支持所有的原始数值类型:

表达式 名称 描述
+x 一元加法运算符 全等操作
-x 一元减法运算符 将值变为其相反数
x + y 二元加法运算符 执行加法
x - y 二元减法运算符 执行减法
x * y 乘法运算符 执行乘法
x / y 除法运算符 执行除法
x ÷ y 整除 取 x / y 的整数部分
x \ y 反向除法 等价于 y / x
x ^ y 幂操作符 xy 次幂
x % y 取余 等价于 rem(x,y)

# 布尔运算符

Bool 类型支持以下布尔运算符:

表达式 名称
!x 否定
x && y 短路与
x || y 短路或

# 位运算符

所有原始整数类型都支持以下位运算符:

表达式 名称
~x 按位取反
x & y 按位与
x Ι y 按位或
x ⊻ y 按位异或(逻辑异或)
x ⊼ y 按位与(非与)
x ⊽ y 按位或(非或)
x >>> y 逻辑右移
x >> y 算术右移
x << y 逻辑/算术左移

# 复合赋值运算符

符号 角色 更多信息
&= 与赋值 &=
+= 加法赋值 +=
-= 减法赋值 -=
*= 乘法赋值 *=
÷= 整除赋值 ÷=
<<= 算术左移赋值 <<=
>>= 算术右移赋值 >>=
\= 左除赋值 \=
>>>= 逻辑右移赋值 >>>=
|= 或赋值 |=
^= 幂赋值 ^=
%= 取余赋值 %=
/= 右除赋值 /=
:: 用两个笛卡尔数构建笛卡尔坐标 ::

# 数值比较

函数名 简介
== 相等
!=, 不等
< 小于
<=, 小于等于
> 大于
>=, 大于等于

# 运算符的优先级与结合性

从高到低,Julia 运算符的优先级与结合性为:

分类 运算符 结合性
语法 . followed by :: 左结合
幂运算 ^ 右结合
一元运算符 + - √ 右结合
移位运算 << >> >>> 左结合
除法 // 左结合
乘法 * / % & \ ÷ 左结合
加法 + - Ι 左结合
语法 : .. 左结合
语法 |> 左结合
语法 <| 右结合
比较 > < >= <= == === != !== <: 无结合性
流程控制 && followed by || followed by ? 右结合
Pair 操作 => followed by ? 右结合
赋值 = += -= *= /= //= \= ^= ÷= %= Ι = &= ⊻= <<= >>= >>>= 右结合

# 算术运算

加、减、乘、除、幂、四舍五入

基本算术
加法 简介
+ 加法运算符
sum 数组元素求和
sum! 按指定维度求和
cumsum 求累积和
ty_cumsum 求累积和
cumsum! 求累积和并赋值
减法 简介
- 减法运算符
diff 差分
乘法 简介
* 乘法运算符
.* 数组乘法
prod 数组元素的乘积
prod! 按指定维度求积
cumprod 累计乘积
cumprod! 按维度累计乘积
除法 简介
\ 求解关于 x 的线性方程组 Ax = B
/ 求解关于 x 的线性方程组 xA = B
÷ 整除
.\ 数组左除
./ 数组右除
rationalize 将浮点数 x 近似为具有给定整数类型分量的有理数。 结果将与 x 相差不超过 tol
numerator 分子
denominator 分母
// 整数相除,创建有理数
简介
^ 矩阵幂
power 按元素求幂
转置 简介
transpose 转置向量或矩阵
' 复共轭转置
conj 复共轭
conj! 原地复共轭
数组符号 简介
- 一元减法
+ 一元加法
其他 简介
fma 更为精确地计算x*y + z
muladd 计算x * y + z
模除法与舍入
函数名 简介
div 带有舍入选项的整除
mod 除后的余数(取模运算)
rem 除后的余数
idivide 带有舍入选项的整除
ceil 向正无穷舍入
trunc 向零舍入
floor 向负无穷舍入
round 四舍五入为最近的小数或整数
ty_ceil 向正无穷舍入
ty_floor 向负无穷舍入
ty_round 四舍五入为最近的小数或整数
二元函数
函数名 简介
bsxfun 对两个数组应用按元素运算

# 关系运算

值的比较

关系运算

函数名 简介
== 相等
>= 确定大于或等于
> 确定大于
<= 确定小于等于
< 确定小于
!= 不等
!== 不恒等于
isequal 确定数组相等性

# 逻辑运算

真或假(布尔)条件

逻辑运算
函数名 简介
& 计算逻辑 AND
&& 具有短路功能的逻辑运算
! 计算逻辑 NOT
| 计算逻辑 OR
|| 具有短路功能的逻辑运算
xor 按位异或
按位异或
all 确定所有的数组元素是为非零还是 true
any 确定任何数组元素是否为非零
false 逻辑 0(假)
true 逻辑值 1(真)
find 查找非零元素的索引和值
logical 将数值转换为逻辑值

# 按位运算

设置、偏移或比较特定位域

按位运算
函数名 简介
! 否定
&& 逻辑与
& 按位与
~ 按位取反
Ι 按位或
ΙΙ 逻辑或
<< 算术左移
>> 算术右移
>>> 逻辑右移
bitcmp 按位补码
bitget 获取指定位置的位
bitset 设置指定位置的位
bitshift 将位移动指定位数
inv 求逆
swapbytes 交换字节顺序
xor 按位异或
按位异或

# 集合运算

并集、交集、集合关系

集合运算
函数名 简介
append! 为集合添加元素
insert! 为集合添加元素
deleteat! 删除向量中的值
empty! 删除所有元素值
foreach 对每个元素调用函数
map 对每个元素调用函数
intersect 构造集合的交集
intersect! 构造集合的交集
ismember 判断数组元素是否为集数组成员
setdiff 构造集合的差集
setdiff! 构造集合的差集
setxor 设置两个数组的异或
union 构造集合的并集
union! 构造集合的并集
unique 数组中的唯一值
unique! 数组中的唯一值
ty_unique 数组中的唯一值(保留 unique 的旧版行为)
ismembertol 容差范围内的集合成员
uniquetol 容差内的唯一值
innerjoin 两个表或时间表之间的内联
outerjoin 两个表或时间表之间的外联
leftjoin 将两表根据第一个表进行连接
rightjoin 将两表根据第二个表进行连接
antijoin 反连接
crossjoin 交叉连接
semijoin 半连接
判断元素是否不在集合中
all 是否全部为真值
all! 是否全部为真值
any 是否存在真值
any! 是否存在真值
prepend! 在向量前端添加元素
replace! 替换集合中的元素
resize! 改变向量长度
ty_setdiff 设置两个数组的差集
ty_intersect 设置两个数组的交集
splice! 删除向量中的值
symdiff 构造集合的对称差
symdiff! 构造集合的对称差
Base.front 返回元组除最后一个元素外的元素
Base.tail 返回元组除第一个元素外的元素

# 其它常用函数

舍入函数
函数名 简介
round 四舍五入为最近的小数或整数
floor 向负无穷舍入
ceil 向正无穷舍入
trunc 向零舍入
ty_floor 向负无穷舍入
ty_round 四舍五入为最近的小数或整数
ty_ceil 向正无穷舍入
除法函数
函数名 简介
div 带有舍入选项的整除
mod 除后的余数(取模运算)
rem 除后的余数
符号和绝对值
函数名 简介
abs 绝对值和复数的模
abs2 绝对值和复数的模的平方
sign Sign 函数(符号函数)
gcd 最大公约数
lcm 最小公倍数
signbit 表示数字的符号
幂、对数和平方根
函数名 简介
sqrt 平方根
cbrt 立方根
copysign 返回一个数,其值等于 x 的模,符号与 y 一致
exp 自然指数函数在 x 处的值
expm1 针对较小的 x 值正确计算 exp(x)-1
exponent 二进制指数
flipsign 返回一个数,其值等于 x 的模,符号与 x*y 一致
hypot 平方和的平方根(斜边)
log 自然对数
log1p 针对较小的 x 值正确计算 log(1+x)
log2 以 2 为底的对数和浮点数分解
log10 自然对数