算术运算符

 Julia语言中的位运算符、赋值运算符、算术运算符-LMLPHP

# 使用基本的赋值运算符 =  
a = 10  
println("a 的初始值是: $a")  
  
# 使用加法赋值运算符 +=  
a += 5  
println("a 加上 5 后的值是: $a")  
  
# 使用减法赋值运算符 -=  
a -= 3  
println("a 减去 3 后的值是: $a")  
  
# 使用乘法赋值运算符 *=  
a *= 2  
println("a 乘以 2 后的值是: $a")  
  
# 使用除法赋值运算符 /=  
a /= 2  
println("a 除以 2 后的值是: $a")  

# 使用幂赋值运算符 ^= 
a = a ^ 2  
println("a 的平方是: $a")  

#以下赋值运算符按二进制运算

# 初始变量值  
a = 10  
b = 4  
  
# 取模赋值运算符 %=  
a %= 3  
println("a 对 3 取模后的值是: $a")  # 输出 a 除以 3 的余数  
  
# 虽然Julia没有内置的 <<=, >>=, &=, |=, ^= 运算符,但轻松实现  
  
# 左移且赋值 <<= (通过 << 和 = 实现)  
a = a << 2  # 将 a 左移 2 位  
println("a 左移 2 位后的值是: $a")  
  
# 右移且赋值 >>= (通过 >> 和 = 实现)  
a = a >> 1  # 将 a 右移 1 位  
println("a 右移 1 位后的值是: $a")  
  
# 按位与且赋值 &= (通过 & 和 = 实现)  
b = b & 3  # b 和 3 进行按位与操作  
println("b 和 3 按位与后的值是: $b")  
  
# 按位或且赋值 |= (通过 | 和 = 实现)  
b = b | 1  # b 和 1 进行按位或操作  
println("b 和 1 按位或后的值是: $b")  

赋值运算符

 Julia语言中的位运算符、赋值运算符、算术运算符-LMLPHP

#定义变量  
a = 10  
b = 5

# 加法运算符 (+)  
println("加法: $a + $b = $(a + b)")  
  
# 减法运算符 (-)  
println("减法: $a - $b = $(a - b)")  
  
# 乘法运算符 (*)  
println("乘法: $a * $b = $(a * b)")  
  
# 除法运算符 (/)  
println("除法: $a / $b = $(a / b)")  

# 反除运算符
println("反除: $a \ $b = $(a \ b)")
  
# 取余运算符 (%)  
println("取余: $a % $b = $(a % b)")  

#指数运算符 (^)(在Julia中,使用 `^` 进行幂运算需要引入 MathConstants 包或使用 `**`,但标准库中通常使用 `^`) 
println("指数: $a ^ $b = $(a ^ b)")

# 更正后的指数运算符示例  
println("更正后的指数运算示例:")  
println("使用浮点数进行指数运算: $(float(a)) ^ $(float(b)) = $(float(a) ^ float(b))") 

pow(x, y) = x ^ y  
println("使用自定义的 pow 函数进行指数运算: $a 和 $b 的结果是 $(pow(float(a), float(b)))") 

位运算符

Julia语言中的位运算符、赋值运算符、算术运算符-LMLPHP

#先建立一个自定义函数来实现十进制到二进制的转换(去除前导零)
function bin(x)  
    # 转换为二进制字符串并去除"0b"前缀  
    bstr = bitstring(x)[3:end]  
    # 去除前导零  
    while startswith(bstr, "0")  
        bstr = bstr[2:end]  
    end  
    return bstr == "" ? "0" : bstr  # 如果结果为空字符串,则返回"0"  
end

# 定义变量  
a = 0b1010  # 二进制 1010,十进制 10  
b = 0b0110  # 二进制 0110,十进制 6  

# 按位与运算符 &  
result_and = a & b  
println("a & b 的结果是 $result_and (二进制表示:$(bin(result_and)))")  
  
# 按位或运算符 |  
result_or = a | b  
println("a | b 的结果是 $result_or (二进制表示:$(bin(result_or)))")  
  
# 按位异或运算符 ^  
result_xor = a ^ b  
println("a ^ b 的结果是 $result_xor (二进制表示:$(bin(result_xor)))")  
  
# 左移运算符 <<  
shift_left = a << 2  
println("a << 2 的结果是 $shift_left (二进制表示:$(bin(shift_left)))")  
  
# 右移运算符 >>  
shift_right = a >> 1  
println("a >> 1 的结果是 $shift_right (二进制表示:$(bin(shift_right)))")  
  
# 注意:在 Julia 中,位运算符的优先级可能与你期望的不同,因此建议使用括号来明确优先级  
complex_operation = (a & b) ^ (a << 1)  
println("(a & b) ^ (a << 1) 的结果是 $complex_operation (二进制表示:$(bin(complex_operation)))")

 以上信息Markdown版本代码

**Julia语言的算数运算符及意义**

| 运算符   | 意义 |
| :--: | :--: |
| + | 两数相加| 
| - | 两数相减 | 
| * | 两数相乘 |
| / | 两数相除求商 |
| % | 两数相除求余(取模) |
| ^ | 幂运算 |
| \ | 反除 |  

---

**Julia基本算术运算符示例**

定义变量  

```julia

a = 10  
b = 5  

```

```julia

# 加法运算符 (+)  
println("加法: $a + $b = $(a + b)")  
  
# 减法运算符 (-)  
println("减法: $a - $b = $(a - b)")  
  
# 乘法运算符 (*)  
println("乘法: $a * $b = $(a * b)")  
  
# 除法运算符 (/)  
println("除法: $a / $b = $(a / b)")  

# 反除运算符
println("反除: $a \ $b = $(a \ b)")
  
# 取余运算符 (%)  
println("取余: $a % $b = $(a % b)")  

```

指数运算符 (^)(在Julia中,使用 `^` 进行幂运算需要引入 MathConstants 包或使用 `**`,但标准库中通常使用 `^`) 

```julia

println("指数: $a ^ $b = $(a ^ b)")

```

在Julia中,`^` 实际上并不是内置的操作符来进行幂运算。  
上面的代码在一些环境中会报错,因为 Julia 的标准库并没有为整数定义 `^` 操作符。  
正确的方式是使用 `^` 运算符与浮点数,或者使用函数 `pow(a, b)`。

```julia

# 更正后的指数运算符示例  
println("更正后的指数运算示例:")  
println("使用浮点数进行指数运算: $(float(a)) ^ $(float(b)) = $(float(a) ^ float(b))") 

```

也可以使用 `pow` 函数, 例如可以通过 `using Base.Math: ^` 来引入对浮点数的 `^` 操作符支持(这实际上不是必要的,因为 `^` 已经对浮点数有效),  
或者通过其他数学库(如 `using SpecialFunctions: pow` 如果该库提供了这样的函数)。  
但请注意,Julia中通常直接使用 `^` 运算符即可,只要操作数是浮点数。

```julia

pow(x, y) = x ^ y  
println("使用自定义的 pow 函数进行指数运算: $a 和 $b 的结果是 $(pow(float(a), float(b)))") 

```
**赋值运算符及意义**

|运算符|意义|
| :--: | :--:|
| = | 赋值运算符 |
| += | 加法赋值运算符 |
| -= | 减法赋值运算符 |
| *= | 乘法赋值运算符 |
| /= | 除法赋值运算符 |
| \= | 反除赋值运算符 |
| ^= | 幂赋值运算符 |
| %= | 取模赋值运算符 |
| <<= | 左移且赋值运算符 |
| >>= | 右移且赋值运算符 |
| &= | 按位与且赋值运算符 |
| &#124;= | 按位或且赋值运算符 |

---



```julia

# 使用基本的赋值运算符 =  
a = 10  
println("a 的初始值是: $a")  
  
# 使用加法赋值运算符 +=  
a += 5  
println("a 加上 5 后的值是: $a")  
  
# 使用减法赋值运算符 -=  
a -= 3  
println("a 减去 3 后的值是: $a")  
  
# 使用乘法赋值运算符 *=  
a *= 2  
println("a 乘以 2 后的值是: $a")  
  
# 使用除法赋值运算符 /=  
a /= 2  
println("a 除以 2 后的值是: $a")  

# 使用幂赋值运算符 ^= 
a = a ^ 2  
println("a 的平方是: $a")  
  


```

以下赋值运算符按二进制运算

```julia

# 初始变量值  
a = 10  
b = 4  
  
# 取模赋值运算符 %=  
a %= 3  
println("a 对 3 取模后的值是: $a")  # 输出 a 除以 3 的余数  
  
# 虽然Julia没有内置的 <<=, >>=, &=, |=, ^= 运算符,但我们可以轻松实现它们  
  
# 左移且赋值 <<= (通过 << 和 = 实现)  
a = a << 2  # 将 a 左移 2 位  
println("a 左移 2 位后的值是: $a")  
  
# 右移且赋值 >>= (通过 >> 和 = 实现)  
a = a >> 1  # 将 a 右移 1 位  
println("a 右移 1 位后的值是: $a")  
  
# 按位与且赋值 &= (通过 & 和 = 实现)  
b = b & 3  # b 和 3 进行按位与操作  
println("b 和 3 按位与后的值是: $b")  
  
# 按位或且赋值 |= (通过 | 和 = 实现)  
b = b | 1  # b 和 1 进行按位或操作  
println("b 和 1 按位或后的值是: $b")  
  
```

**位运算符**

| 运算符 | 意义 |
| :--: | :--:|
| & | 对于两个整数,如果相应的二进制位都为1,则结果的相应位为1,否则为0 |
| &#124;= | 对于两个整数,如果相应的二进制位至少有一个为1,则结果的相应位为1,否则为0 |
| ~ | 对于一个整数,将其二进制位反转,即0变为1,1变为0。请注意,这个运算符在Julia中实际上执行的是补码运算,因此结果可能与直接反转二进制位略有不同,特别是对于有符号整数 |
| << | 将一个整数的二进制位向左移动指定的位数,右侧用0填充。每向左移动一位,相当于将该数乘以2的相应次方 |
| >> | 将一个整数的二进制位向右移动指定的位数,左侧用符号位填充(对于有符号整数)或0填充(对于无符号整数)。每向右移动一位,相当于将该数除以2的相应次方(忽略余数) |
| ^ | 对于两个整数,如果相应的二进制位一个为0另一个为1,则结果的相应位为1,否则为0 |

Julia中的位运算符仅适用于整数类型(如Int8、Int16、Int32、Int64、Int128、UInt8、UInt16、UInt32、UInt64、UInt128等),不适用于浮点数或复数类型。 

先建立一个自定义函数来实现十进制到二进制的转换(去除前导零)

```julia

function bin(x)  
    # 转换为二进制字符串并去除"0b"前缀  
    bstr = bitstring(x)[3:end]  
    # 去除前导零  
    while startswith(bstr, "0")  
        bstr = bstr[2:end]  
    end  
    return bstr == "" ? "0" : bstr  # 如果结果为空字符串,则返回"0"  
end

```

```julia
 
# 定义变量  
a = 0b1010  # 二进制 1010,十进制 10  
b = 0b0110  # 二进制 0110,十进制 6  
  
# 按位与运算符 &  
result_and = a & b  
println("a & b 的结果是 $result_and (二进制表示:$(bin(result_and)))")  
  
# 按位或运算符 |  
result_or = a | b  
println("a | b 的结果是 $result_or (二进制表示:$(bin(result_or)))")  
  
# 按位异或运算符 ^  
result_xor = a ^ b  
println("a ^ b 的结果是 $result_xor (二进制表示:$(bin(result_xor)))")  
  
# 左移运算符 <<  
shift_left = a << 2  
println("a << 2 的结果是 $shift_left (二进制表示:$(bin(shift_left)))")  
  
# 右移运算符 >>  
shift_right = a >> 1  
println("a >> 1 的结果是 $shift_right (二进制表示:$(bin(shift_right)))")  
  
# 注意:在 Julia 中,位运算符的优先级可能与你期望的不同,因此建议使用括号来明确优先级  
complex_operation = (a & b) ^ (a << 1)  
println("(a & b) ^ (a << 1) 的结果是 $complex_operation (二进制表示:$(bin(complex_operation)))")

```

<!--
 *                        ::
 *                       :;J7, :,                        ::;7:
 *                       ,ivYi, ,                       ;LLLFS:
 *                       :iv7Yi                       :7ri;j5PL
 *                      ,:ivYLvr                    ,ivrrirrY2X,
 *                      :;r@Wwz.7r:                :ivu@kexianli.
 *                     :iL7::,:::iiirii:ii;::::,,irvF7rvvLujL7ur
 *                    ri::,:,::i:iiiiiii:i:irrv177JX7rYXqZEkvv17
 *                 ;i:, , ::::iirrririi:i:::iiir2XXvii;L8OGJr71i
 *               :,, ,,:   ,::ir@mingyi.irii:i:::j1jri7ZBOS7ivv,
 *                  ,::,    ::rv77iiiriii:iii:i::,rvLq@huhao.Li
 *              ,,      ,, ,:ir7ir::,:::i;ir:::i:i::rSGGYri712:
 *            :::  ,v7r:: ::rrv77:, ,, ,:i7rrii:::::, ir7ri7Lri
 *           ,     2OBBOi,iiir;r::        ,irriiii::,, ,iv7Luur:
 *         ,,     i78MBBi,:,:::,:,  :7FSL: ,iriii:::i::,,:rLqXv::
 *         :      iuMMP: :,:::,:ii;2GY7OBB0viiii:i:iii:i:::iJqL;::
 *        ,     ::::i   ,,,,, ::LuBBu BBBBBErii:i:i:i:i:i:i:r77ii
 *       ,       :       , ,,:::rruBZ1MBBqi, :,,,:::,::::::iiriri:
 *      ,               ,,,,::::i:  @arqiao.       ,:,, ,:::ii;i7:
 *     :,       rjujLYLi   ,,:::::,:::::::::,,   ,:i,:,,,,,::i:iii
 *     ::      BBBBBBBBB0,    ,,::: , ,:::::: ,      ,,,, ,,:::::::
 *     i,  ,  ,8BMMBBBBBBi     ,,:,,     ,,, , ,   , , , :,::ii::i::
 *     :      iZMOMOMBBM2::::::::::,,,,     ,,,,,,:,,,::::i:irr:i:::,
 *     i   ,,:;u0MBMOG1L:::i::::::  ,,,::,   ,,, ::::::i:i:iirii:i:i:
 *     :    ,iuUuuXUkFu7i:iii:i:::, :,:,: ::::::::i:i:::::iirr7iiri::
 *     :     :rk@Yizero.i:::::, ,:ii:::::::i:::::i::,::::iirrriiiri::,
 *      :      5BMBBBBBBSr:,::rv2kuii:::iii::,:i:,, , ,,:,:i@petermu.,
 *           , :r50EZ8MBBBBGOBBBZP7::::i::,:::::,: :,:,::i;rrririiii::
 *               :jujYY7LS0ujJL7r::,::i::,::::::::::::::iirirrrrrrr:ii:
 *            ,:  :@kevensun.:,:,,,::::i:i:::::,,::::::iir;ii;7v77;ii;i,
 *            ,,,     ,,:,::::::i:iiiii:i::::,, ::::iiiir@xingjief.r;7:i,
 *         , , ,,,:,,::::::::iiiiiiiiii:,:,:::::::::iiir;ri7vL77rrirri::
 *          :,, , ::::::::i:::i:::i:i::,,,,,:,::i:i:::iir;@Secbone.ii:::
 -->

03-03 00:56