首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Julia简介
Julia 语言安装
Julia 交互式命令
Julia 基本语法
Julia 数组
Julia 元组
Julia 数据类型
Julia 复数和有理数
Julia 基本运算符
Julia 数学函数
Julia 字符串
Julia 正则表达式
Julia 函数
Julia 流程控制
Julia 字典和集合
Julia 日期和时间
Julia 文件读写
Julia元编程
当前位置:
首页>>
技术小册>>
Julia入门教程
小册名称:Julia入门教程
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,如: 3+2=5。 Julia 语言内置了丰富的运算符,支持的运算有: - 算术运算符 - 逻辑运算符 - 关系运算符 - 位运算符 - 赋值运算符 - 向量化 "点" 运算符 ###算术运算符 下表显示了 Julia 的基本算术运算符,适用于所有的基本数值类型: ``` 表达式 名称 描述 +x 一元加法运算符 全等操作 -x 一元减法运算符 将值变为其相反数 x + y 二元加法运算符 两数相加 x - y 二元减法运算符 两数相减 x * y 乘法运算符 两数相乘 x / y 除法运算符 两数相除 x ÷ y 整除 取 x / y 的整数部分 x \ y 反向除法 等价于 y / x x ^ y 幂操作符 x 的 y 次幂 x % y 取余 等价于 rem(x,y) ``` 实例 ``` julia> 1 + 2 + 3 6 julia> 1 - 2 -1 julia> 3*2/12 0.5 julia> 2+20-5 17 julia> 50*2/10 10.0 julia> 23%2 1 julia> 2^4 16 ``` ###布尔运算符 下表显示了 Julia 的布尔运算符: ``` 表达式 名称 !x 否定 x && y 短路与,在表达式 x && y 中,子表达式 y 仅当 x 为 true 的时候才会被执行。 x || y 短路或,在表达式 x || y 中,子表达式 y 仅在 x 为 false 的时候才会被执行。 ``` 实例 ``` julia> !true false julia> !false true julia> true && (x = (1, 2, 3)) (1, 2, 3) julia> false && (x = (1, 2, 3)) false julia> false || (x = (1, 2, 3)) (1, 2, 3) ``` ###关系运算符 下表显示了 Julia 的关系运算符: ``` 操作符 名称 == 相等 !=, ≠ 不等 < 小于 <=, ≤ 小于等于 > 大于 >=, ≥ 大于等于 ``` 实例 ``` julia> 100 == 100 true julia> 100 == 101 false julia> 100 != 101 true julia> 100 == 100.0 true julia> 100 < 500 true julia> 100 > 500 false julia> 100 >= 100.0 true julia> -100 <= 100 true julia> -100 <= -100 true julia> -100 <= -500 false julia> 100 < -10.0 false ``` ###链式比较 链式比较在写数值代码时特别方便,它使用 && 运算符比较标量,数组则用 & 进行按元素比较。比如,0 .< A .< 1 会得到一个 boolean 数组,如果 A 的元素都在 0 和 1 之间则数组元素就都是 true。 Julia 允许链式比较: 实例 ``` julia> 1 < 2 <= 2 < 3 == 3 > 2 >= 1 == 1 < 3 != 5 true ``` 注意链式比较的执行顺序: 实例 ``` julia> M(a) = (println(a); a) M (generic function with 1 method) julia> M(1) < M(2) <= M(3) 2 1 3 true julia> M(1) > M(2) <= M(3) 2 1 false ``` ###位运算符 下表显示了 Julia 的位运算符: ``` 表达式 名称 ~x 按位取反 x & y 按位与 x | y 按位或 x ⊻ y 按位异或(逻辑异或) x ⊼ y 按位与(非与) x ⊽ y 按位或(非或) x >>> y 逻辑右移 x >> y 算术右移 x << y 逻辑/算术左移 ``` 实例 ``` julia> ~123 -124 julia> 123 & 234 106 julia> 123 | 234 251 julia> 123 ⊻ 234 145 julia> xor(123, 234) 145 julia> nand(123, 123) -124 julia> 123 ⊼ 123 -124 julia> nor(123, 124) -128 julia> 123 ⊽ 124 -128 julia> ~UInt32(123) 0xffffff84 julia> ~UInt8(123) 0x84 ``` ###赋值运算符 每一个二元运算符和位运算符都可以给左操作数复合赋值,方法是把 = 直接放在二元运算符后面。比如,x += 3 等价于 x = x + 3 。 下表显示了 Julia 的赋值运算符: ``` 运算符 描述 实例 = 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C += 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A -= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A *= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A /= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A %= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A <<= 左移且赋值运算符 C <<= 2 等同于 C = C << 2 >>= 右移且赋值运算符 C >>= 2 等同于 C = C >> 2 &= 按位与且赋值运算符 C &= 2 等同于 C = C & 2 ^= 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2 |= 按位或且赋值运算符 C |= 2 等同于 C = C | 2 >>>= 左移且逻辑运算符 C >>>= 2 等同于 C = C >>>2 ⊻= 异或(逻辑异或)赋值运算符 C ⊻= 2 等同于 C = C ⊻= 2 ``` 实例 ``` julia> x = 1 1 julia> x += 3 4 julia> x 4 ``` ###向量化 "点" 运算符 Julia 中,每个二元运算符都有一个 "点" 运算符与之对应,例如 ^ 就有对应的 .^ 存在。这个对应的 .^ 被 Julia 自动地定义为逐元素地执行 ^ 运算。比如 [1,2,3] ^ 3 是非法的,因为数学上没有给(长宽不一样的)数组的立方下过定义。但是 [1,2,3] .^ 3 在 Julia 里是合法的,它会逐元素地执行 ^ 运算(或称向量化运算),得到 [1^3, 2^3, 3^3]。类似地,! 或 √ 这样的一元运算符,也都有一个对应的 .√ 用于执行逐元素运算。 实例 ``` julia> [1,2,3] .^ 3 3-element Vector{Int64}: 1 8 27 ``` 除了点运算符,我们还有逐点赋值运算符,类似 a .+= b(或者 @. a += b)会被解析成 a .= a .+ b。 运算符的优先级与结合性 运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。 例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。 下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。 ``` 分类 运算符 结合性 语法 . followed by :: 左结合 幂运算 ^ 右结合 一元运算符 + - √ 右结合 移位运算 << >> >>> 左结合 除法 // 左结合 乘法 * / % & \ ÷ 左结合 加法 + - | ⊻ 左结合 语法 : .. 左结合 语法 |> 左结合 语法 <| 右结合 比较 > < >= <= == === != !== <: 无结合性 流程控制 && followed by || followed by ? 右结合 Pair 操作 => 右结合 赋值 = += -= *= /= //= \= ^= ÷= %= |= &= ⊻= <<= >>= >>>= 右结合 ``` 我们也可以通过内置函数 Base.operator_precedence 查看任何给定运算符的优先级数值,数值越大优先级越高: 实例 ``` julia> Base.operator_precedence(:+), Base.operator_precedence(:*), Base.operator_precedence(:.) (11, 12, 17) julia> Base.operator_precedence(:sin), Base.operator_precedence(:+=), Base.operator_precedence(:(=)) # (注意:等号前后必须有括号 `:(=)`) (0, 1, 1) ``` 另外,内置函数 Base.operator_associativity 可以返回运算符结合性的符号表示: 实例 ``` julia> Base.operator_associativity(:-), Base.operator_associativity(:+), Base.operator_associativity(:^) (:left, :none, :right) julia> Base.operator_associativity(:⊗), Base.operator_associativity(:sin), Base.operator_associativity(:→) (:left, :none, :right) ```
上一篇:
Julia 复数和有理数
下一篇:
Julia 数学函数
该分类下的相关小册推荐:
暂无相关推荐.