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")  

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

# 初始变量值  
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")  

赋值运算符

 

#定义变量  
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)))") 

位运算符

#先建立一个自定义函数来实现十进制到二进制的转换(去除前导零)
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:::
 -->

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/423517.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSRF跨站请求伪造(一)

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、CSRF简介 CSRF&#xff0c;全称&#xff1a;Cross-S…

HarmonyOS Stage模型 用程序运行切换 验证UIAbility 启动模式(下) 验证:specified启动模式 Ability间切换

上文 HarmonyOS Stage模型 用程序运行切换 验证UIAbility 启动模式(上) 验证:singleton、multiton、standard启动模式 我们已经验证完了 singleton multiton standard 三种启动模式 留下了毕竟复杂的 specified 这里 首先 我们要写两个不同的界面 index 编写代码如下 import…

2024最新算法:鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)求解23个基准函数(提供MATLAB代码)

一、鳑鲏鱼优化算法 鳑鲏鱼优化算法&#xff08;Bitterling Fish Optimization&#xff0c;BFO&#xff09;由Lida Zareian 等人于2024年提出。鳑鲏鱼在交配中&#xff0c;雄性和雌性物种相互接近&#xff0c;然后将精子和卵子释放到水中&#xff0c;但这种方法有一个很大的缺…

Linux系统源代码数据防泄密加密软件

数据防泄密系统 是一套从源头上保障数据安全和使用安全的软件系统。包含了文件透明加解密、内部文件流转功能、密级管控、离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。从根本上严防信息外泄&#xff0c;保障信息安全。 www.weaem.com 功能介绍…

手写模拟器,解放双手!效果炸裂的生产工具

手写模拟器是一款基于Handright的仿手写图片生成软件&#xff0c;可以让你的电脑和手机也能写出漂亮的手写字&#xff0c;你只需要输入你想要写的内容&#xff0c;选择你喜欢的字体和背景&#xff0c;就可以生成一张高仿真的手写图片&#xff0c;用于各种场合&#xff0c;比如做…

CloudCompare使用-点云手动分割操作

点云手动分割操作 一、概述二、分割步骤1. 点击分割按钮2. 分割标题栏 一、概述 我们有时候需要对点云进行局部分割&#xff0c;就想对下面这个四棱锥和立方体的组合体给分离出来。 分离的效果如下&#xff1a; 二、分割步骤 1. 点击分割按钮 有两个入口 1. 菜单栏 2. 快…

如何根据玩家数量和游戏需求选择最合适的服务器配置?

根据玩家数量和游戏需求选择最合适的服务器配置&#xff0c;首先需要考虑游戏的类型、玩家数量、预计的在线时间以及对内存和CPU性能的需求综合考虑。对于大型多人在线游戏&#xff0c;如MMORPG或MOBA等&#xff0c;由于需要更多的CPU核心数来支持更复杂的游戏逻辑和处理大量数…

k8s-001-Centos7内核升级

1. 查看内核 [rootlocalhost ~]# uname -a 2. 执行的命令(安装最新版内核): 下载: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 安装: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm &#xff08; 查看最新版内核&…

深度学习的onnx模型插入新节点构建新模型

import numpy as np import onnx import onnxruntime import onnxruntime.backend as backendmodel onnx.load(test.onnx) node model.graph.node graph model.graph# 1.2搜索目标节点 # for i in range(len(node)): # if node[i].op_type Conv: # node_rise …

Java中的图数据库应用:Neo4j入门

第1章&#xff1a;引言 在数据驱动的时代&#xff0c;咱们处理的不仅仅是数字和文本&#xff0c;还有复杂的关系和网络。想象一下社交网络中人与人之间错综复杂的联系&#xff0c;或者是互联网上网页之间的链接关系&#xff0c;传统的表格数据库已经难以高效地处理这些关系密集…

Linux-基础命令(黑马学习笔记)

Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树形结构 Windows系统可以拥有多个盘符&#xff0c;如C盘、D盘、E盘 Linux没有盘符这个概念&#xff0c;只有一个根目录 /&#xff0c;所有文件都在它下面 Linux路径的描述方式 ● 在Linux系统中&#xff0c;路径之…

抖音视频批量下载软件|视频评论采集工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。用户可以通过关键词搜索抓取视频数据&#xff0c;也可以通过分享链接进行单个视频的抓取和下载&#xff0c;从而轻松获取抖音视频评论数据。 批量视频提取模块&a…

Java中使用poi+poi-tl实现根据模板导出word文档

场景 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出: 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出_若依导出前端获得到后端的execl流之后怎么操作-CSDN博客 上面讲的是Excel的导出&#xff0c;如果是需要根据w…

基于SpringBoot多模块项目引入其他模块时@Autowired无法注入

基于SpringBoot多模块项目引入其他模块时Autowired无法注入 一、问题描述1、解决方案 一、问题描述 启动Spring Boot项目时报 Could not autowire. No beans of ‘xxxxxxxx’ type found. 没有找到bean的实例&#xff0c;即spring没有实例化对象&#xff0c;也就无法根据配置文…

python-基础篇-运算-常见案例

文章目录 出租车车费计价牛顿第二定律虚过多少秒将港珠澳大桥的全长转换成中国古代的丈、尺表示出来 出租车车费计价 import math distance int(input("请输入运行里程数&#xff1a;")) print("本次运行公里数为&#xff1a;\033[31;0m", distance, &qu…

13. Springboot集成Protobuf

目录 1、前言 2、Protobuf简介 2.1、核心思想 2.2、Protobuf是如何工作的&#xff1f; 2.3、如何使用 Protoc 生成代码&#xff1f; 3、Springboot集成 3.1、引入依赖 3.2、定义Proto文件 3.3、Protobuf生成Java代码 3.4、配置Protobuf的序列化和反序列化 3.5、定义…

聊聊 HTTP 性能优化

作为用户的我们在 "上网冲浪" 的时候总是希望快一点&#xff0c;尤其是抢演唱会门票的时候&#xff0c;但是现实并非如此&#xff0c;有时候我们会遇到页面加载缓慢、响应延迟的情况。 而 HTTP 协议作为互联网世界的基础&#xff0c;从网站打开速度到移动应用的响应…

已经淘汰的电脑只能换不锈钢盆了吗?不!你可以换个流畅的系统试试

前言 昨天已经给小伙伴们讲解了&#xff0c;在硬件看起来还不错的情况下&#xff0c;如何自查自行升级电脑硬件&#xff0c;以达到流畅使用Windows10系统的标准。 硬件自查自纠&#xff01;十年前的电脑可能还可以再战十年 如果可以&#xff0c;谁都不想把Windows系统更换成…

STM32F4 HAL库串口死锁问题调试记录

文章目录 STM32F4 HAL库串口死锁问题调试记录调试方法结果分析解决方法一&#xff1a;方法二&#xff1a; STM32F4 HAL库串口死锁问题调试记录 使用方法&#xff1a;通过串口DMA固定周期向外发送数据&#xff0c;同时开启串口DMA接收用于接收其它板卡发来的数据。 问题&#x…

蜘蛛蜂优化算法SWO求解不闭合SD-MTSP,可以修改旅行商个数及起点(提供MATLAB代码)

1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&#xff0c;求解精度高的优势。VRPTW&#x…