C语言操作符(上)
操作符
- 一,操作符的分类
- 1,算数操作符
- 2,赋值操作符
- 3,逻辑操作符
- 4,条件操作符
- 4,单目操作符
- 5,函数调用和下表访问操作符
- 二,原码反码补码
- 三,移位操作符
- 1,左移操作符
- 2,右移操作符
- 四,位操作符
- 1,&按位与的妙用
- 2,|按位或的妙用
一,操作符的分类
C语言中提供的操作符有一下这么几种:
• 算术操作符: + 、- 、* 、/ 、%
• 移位操作符: << >>
• 位操作符: & | ^
• 赋值操作符: = 、+= 、 -= 、 = 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^=
• 单⽬操作符: !、++、–、&、、+、-、~ 、sizeof、(类型)
• 关系操作符: > 、>= 、< 、<= 、 == 、 !=
• 逻辑操作符: && 、||
• 条件操作符: ? :
• 逗号表达式: ,
• 下标引⽤: []
• 函数调⽤: ()
• 结构成员访问: . 、->
看到这些操作符相信有一些是你已经见过并熟练掌握的,但还有一些涉及到位运算的操作符你可能是初次见到。像移位操作符,逗号表达式,位操作符等,本篇文章重点来讲述涉及到位的操作符。
我们先来花小部分篇幅来讲算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单⽬操作符。
1,算数操作符
算术操作符有这几种分别为: + 、- 、* 、/ 、%唯一需要注意的就是取模运算,计算结果得到的是余数。
通过重复除10模10(/10%10)这两个算数运算符可以获得一个多位数的每一位!
2,赋值操作符
赋值操作符有以下几种分别为:= 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^= 。这种写法其实是n=n+m简写成n+=m的写法。赋值运算符要和关系运算符分开,很多初学者搞不清一个等号和两个等号。
一个等号 = -> 赋值
两个等号 ==-> 判断相等
其中包含的<<,>>,&,^是稍后要介绍的设计位的操作符。
3,逻辑操作符
逻辑操作符有两种: && 、||。&&叫逻辑与 ||叫逻辑或
逻辑操作符主要关心的是布尔值,布尔值True表示真,False表示假,而计算机是二进制只有0和1来表示所以1表示真,0表示假。
所以逻辑操作符在运算的时候有几种情况: 0&&0为0 1&&0为0 1||0为1 0||0为0
在学逻辑操作符还要记住一句话,逻辑与有假为假,逻辑或有真为真,非零即真。
4,条件操作符
条件操作符主要为: ? : 。这个操作符具体形式为:表达式?结果一:结果二。
举个简单的例子:
int main()
{int a = 3;int b = 5;int c = 0;c = a > b ? a : b;printf("%d", c);printf("\n");return 0;
}
从运行结果来看得到的值为5,那为什么是5呢/我们来分析一下代码:
a>b?a:b 从左到右?意思是表达式左边的值为真吗?也就是a是大于b的吗?如果大于结果为a,再将a赋值给c,如果小于,结果为b,再将b赋值给a。
总结:
所以 表达式?结果一:结果二; 表达式为真,执行结果一;表达式为假,执行结果二。
4,单目操作符
单⽬操作符有以下几种: !、++、–、&、*、+、-、~ 、sizeof、(类型)。其中也有一些位操作符,我们稍后介绍。还有一些像自增,自减已经在之前就介绍过。其中比较重要的就是sizeof和~取反操作。
1. sizeof是用来计算类型大小的,比如sizeof(int/short/long/double)。sizeof也经常用来计算数组元素的个数。
**2. ~取反操作,就是将以二进制形式存储的数据进行取反操作。**这点等介绍完了原码反码补码之后你就会明白了。
3,还要注意的是如果sizeof里面有表达式是不参与计算的,因为sizeof在编译阶段就直接返回类型的大小了,比如int类型大小为4。而表达式计算是在运行时才计算的。
5,函数调用和下表访问操作符
函数调用和下标访问操作符在之前的文章有讲到过,可以参考之前的文章。
传送门函数:函数
传送门数组:数组
二,原码反码补码
在介绍设计位操作符之前我门先要了解数据在计算机的存储形式,上一篇文章我们详细介绍了进制转换,有了进制转换的知识就为我们下面的学习打下了基础。如果还不了解进制转换可以去看上一篇文章:传送门。
在上一篇文章中我们介绍了计算机的底层实际上就是电路,而电路只有高电平和低电平两种状态这就与二进制相似只有0和1这两种状态。这时可能有人问计算机是怎么存储数据的呢?比如在我们写代码的时候我们通常会定义一个变量然后给它赋值,那这个值是怎样存储的呢?
首先来介绍一下什么是原码,反码,补码:
1. 原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
2. 反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
3. 补码:反码+1就得到补码。
整数的2进制表示方法有三种,即原码、反码和补码 有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号 位,剩余的都是数值位。 符号位都是⽤0表⽰“正”,⽤1表⽰“负”。一个整型数是占4个字节 一个字节占8比特位 所以是由32位二进制来构成 举个例子:
而整数又分为有符号整数和无符号整数这两种,而有符号数又分为正整数和负整数这两种。
- 正整数的原、反、补码都相同。
- 负整数的三种表方法各不相同。
- 负整数取反加一为补码 补码取反加一为原码。
我们来看一个简单的运算:
#include<stdio.h>
int main()
{int a = 10;int b = -5;//10的原码00000000000000000000000000001010//因为10为整数 原码=反码=补码//-5的原码10000000000000000000000000000101//-5的反码11111111111111111111111111111010//-5的补码11111111111111111111111111111011int c=a+b;//a+b 是补码运算//10的补码 00000000000000000000000000001010//-5的补码 11111111111111111111111111111011//相加之后的补码:100000000000000000000000000000101 最左边多出的一位将丢弃掉所以符号位为0是正整数 原反补都相同,直接读出101对应的值是5printf("%d",c);return 0;
}
由此我们可以总结:
但是数据存放内存中其实存放的是补码这是为什么呢?
在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀ 处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算 过程是相同的,不需要额外的硬件电路。
三,移位操作符
1,左移操作符
移位规则:左边抛弃、右边补0;来看一段代码:
#include<stdio.h>
int main()
{int num=10;int m = num<<1;printf("num = %d",num);printf("m = %d",m);return 0;
}
从结果上看不知各位读者看出来了吗就是左移是不会改变原来的值。我们给出具体分析
2,右移操作符
移位规则:⾸先右移运算分两种:
- 逻辑右移:左边⽤0填充,右边丢弃
- 算术右移:左边⽤原该值的符号位填充,右边丢弃
一般情况下都是算数右移动。下面来看代码;
#include <stdio.h> int main() { int num = 10; int n = num>>1; printf("n= %d\n", n); printf("num= %d\n", num); return 0; }
//逻辑右移1位演⽰ 算术右移1位演⽰
//警告:对于移位运算符,不要移动负数位,
//这个是标准未//定义的。 例如:1 int num = 10;
我们分别给出逻辑右移和算数右移:
总结:
移位操作符操作数只能是整数!不能是其它的数!
四,位操作符
位操作符有三种分别是: &(按位与) |(按位或) ^(按位异或)~(按位取反)。其中按位的位指的是二进制位。举个例子;
#include<stdio.h>
int main()
{int a = -3;int b = 6;int x = 0;int y = 0;int r = 0;int c = 0;x = a & b;y = a|b;r = a^b;c = ~a;printf("a&b = %d\n",x);printf("a|b = %d\n",y);printf("a^b = %d\n",r);printf("~a = %d\n",c);return 0;
}
紧接着我们来分析为什么是这个结果。大家请看图
通过图片已经能非常直观的能看清楚每一步的运算过程了。但有一点要注意就是按位操作符他们的操作数必须是整数。
学习完上面的知识后我们来看一道比较变态的面试题,题目是不创建第三变量怎样实现两个数的交换。这里我们不卖关子直接给出代码然后分析:
#include<stdio.h>
int main()
{int a = 3;int b = 6;printf("交换前a=%d b=%d\n",a,b);a = a ^ b;b = a ^ b;a = a ^ b;printf("交换后a=%d b=%d",a,b);return 0;
}
是不是很神奇,那为什么这样就能直接交换了呢?我们给出相应的图解;
紧接着我们扩展学习一些按位操作符的妙用。
1,&按位与的妙用
我们用一道编程题来举例,求⼀个整数存储在内存中的⼆进制中1的个数。(一下都以这道题为例)我们直接给出代码:
#include<stdio.h>
int main()
{int n = 0;scanf("%d",&n);int count = 0;while(n){if(n%2==1){count++;}n=n/2;}printf("count=%d",count);return 0;
}
15的二进制序列为00000000000000000000000000001111 写出其补码后发现有4个一这与结果是吻合的,但当我们输入负一结果就不对了显然这种方法有缺陷。我们给出改进方法:
#include<stdio.h>
int main()
{int n = 0;scanf("%d", &n);int count = 0;for (int i = 0;i < 32;i++){if (n&1==1){count++;}n = n >> i;}printf("count=%d", count);return 0;
}
这时候我们来看就会发现已经得到我们想要的结果了,按位与是不是非常的神奇呢我们来分析一下原理。
还有一个更加巧妙的方法,我们直接给出代码让你体会体会这种巧妙:
#include<stdio.h>
int main()
{int num = 0;scanf("%d", &num);int count = 0;while (num){num = num & (num - 1);count++;}printf("count=%d\n", count);return 0;
}
这段代码明显又要比上面的代码更加高效了,上面无论怎样都要执行32次循环,而下面这段代码有几个1就循环几次效率大幅提升。那为什么是这样呢?我们画个图分析一下;
2,|按位或的妙用
先来看一道题目,将13二进制序列的第5位修改为1,然后再改回0;
先画个图分析:
我们给出代码:
#include<stdio.h>
int main()
{int m = 13;int n = 5;m = m|(1 << (n - 1));printf("%d", m);return 0;
}
这里如果为什么变成了29还不知道的话那就要去看一下我之前的文章进制转换啦传送门:
那怎么换回来呢?其实也简单,我们画图来分析:
我们给出代码:
#include<stdio.h>
int main()
{int m = 13;int n = 5;m = m|(1 << (n - 1));printf("%d", m);m=m&~(1 << (n - 1));printf("%d",m);return 0;
}
由于文章篇幅有限以上就是本篇文章的所有内容啦,还有些内容将在下期发布敬请期待!
文章有点长感谢能够看到这里的读者,给你们点赞!如果这篇文章能够帮到你,制作不易还请各位读者给一个三连!你们的支持就是我最大的动力!
相关文章:
C语言操作符(上)
操作符 一,操作符的分类1,算数操作符2,赋值操作符3,逻辑操作符4,条件操作符4,单目操作符5,函数调用和下表访问操作符 二,原码反码补码三,移位操作符1,左移操作…...
Linux TCP 之 RTT 采集与 RTO 计算
我们来看看 Linux TCP 采集 RTT 的函数 tcp_rtt_estimator,看注释,充满了胶着。 但在那个谨慎的年代,这些意味着什么? RTT 最初仅用于 RTO 的计算而不是用于调速,RTO 的计算存在两个问题,如果过估&#x…...
智慧水务管网在线监测平台(Axure高保真原型)
智慧水务管网在线监测平台是一种集成了物联网、大数据、云计算和人工智能等技术的综合管理系统。平台的主要目的是提高水务管理的效率和安全,确保供水系统的稳定运行。 智慧水务管网在线监测平台的主要特点和功能: 综合监测与管理:智慧水务平…...
Kubernetes 架构图和组件
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计…...
不建模,无代码,如何构建一个3D虚拟展厅?
在数字化浪潮的推动下,众多企业正积极探索线上3D虚拟展厅这一新型展示平台,旨在以更加生动、直观的方式呈现其产品、环境与综合实力。然而,构建一个既专业又吸引人的3D虚拟展厅并非易事,它不仅需要深厚的技术支持,还需…...
MMDetection学习系列(5)——Mask R-CNN深度探索与实战指南
目录 实例分割 R-CNN系列 R-CNN Fast R-CNN Faster R-CNN Mask R-CNN Mask R-CNN 头部结构细节 两阶段架构 损失函数 掩码 RoIAlign Faster R-CNN中的RoIPool Mask R-CNN 中的RoIAlign 实例分割实验 消融研究 定性结果 SOTA 方法比较 Coovally AI模型训练与…...
Oracle SQL: TRANSLATE 和 REGEXP_LIKE 的知识点详细分析
目录 前言1. TRANSLATE2. REGEXP_LIKE3. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. TRANSLATE TRANSLATE 用于替换字符串中指定字符集的每个字符,返回替换后的字符串 逐一映射输入字…...
PHP语言的软件工程
PHP语言的软件工程 引言 软件工程是计算机科学中的一个重要分支,它涉及软件的规划、开发、测试和维护。在现代开发中,PHP作为一种流行的服务器端脚本语言,广泛应用于网页开发和各种企业应用中。本文将深入探讨PHP语言在软件工程中的应用&am…...
量变引起质变
量变引起质变,这个是最本质的规律,重复进行一件事情,这件事情就会越来越完善,越来越完美,哪怕是菜鸟,重复多了就是大佬。 我从说话结结巴巴,到说话流畅,只是用了15天直播写代码&…...
【专题】为2025制定可付诸实践的IT战略规划报告汇总PDF洞察(附原数据表)
原文链接:https://tecdat.cn/?p39055 在当今瞬息万变的商业环境中,制定有效的 IT 战略规划对于企业的成功与可持续发展至关重要。本报告深入探讨了制定 IT 战略规划的关键活动,旨在为企业和决策者提供全面且实用的指导。 Gartner的《为202…...
Linux内核 -- Linux 的 BIO框架
深入理解 Linux 的 BIO 在 Linux 内核中,BIO(Block I/O)是块层(block layer)用于描述块设备 I/O 请求的核心数据结构。它在文件系统与块设备驱动程序之间充当“载体”,负责把数据页及相关元数据从上层提交…...
Spring WebFlux 和 Spring MVC 的主要区别是什么?
Spring WebFlux 和 Spring MVC 都是 Spring 框架中用于构建 Web 应用的模块,但它们在设计理念、编程模型、性能特性等方面存在显著区别。以下是它们的主要区别: ### 1. **编程模型** - **Spring MVC**: - **同步和阻塞**:Spri…...
卸载和安装Git小乌龟、git基本命令
卸载 Git 打开控制面板: 按 Win R 打开运行对话框,输入 control 并按回车键。或直接在功能搜索里搜索“控制面板”。在控制面板中,选择“程序”或“程序和功能”。 查找并卸载 Git: 在程序列表中找到“Git”或“Git for Windows…...
正向代理与反向代理的主要区别
正向代理与反向代理的主要区别 正向代理与反向代理都是中间服务器 特性正向代理反向代理位置客户端和目标服务器之间客户端和后端服务器之间客户端感知客户端知道代理的存在,并主动连接代理客户端不知道代理的存在,认为直接连接目标服务器主要用途隐藏…...
vue组件学习三(插槽)
目录 1、匿名插槽2、渲染作用域3、默认内容4、具名插槽5、条件插槽6、作用域插槽7、具名作用域插槽最后 1、匿名插槽 父组件调用Mycomponet1组件 <Mycomponet1>click me </Mycomponet1>子组件为 <button><slot></slot> </button>最后结…...
Django 的 `Meta` 类和外键的使用
Django 的 Meta 类和外键的使用 1. Meta 类的常用选项2. 外键(ForeignKey)字段的使用2.1 基本用法2.2 ForeignKey 参数2.3 外键删除选项(on_delete) 3. 外键和查询3.1 获取作者的所有书籍3.2 通过书籍查找作者3.3 使用 select_rel…...
DP动态规划字典版递归
https://blog.csdn.net/m0_74408723/article/details/145303575?spm1001.2014.3001.5501 一只青蛙,可以一次跳上1级台阶,也可以一次跳上2级台阶。求这只青蛙跳10级台阶有多少种跳法? 优化上一篇青蛙跳台阶问题。可以采用Map字典存放f(n-1)f(…...
图论 八字码
我们可能惊异于某些技巧。我们认为这个技巧真是巧妙啊。或者有人认为我依靠自己的直觉想出了这个表示方法。非常自豪。我认为假设是很小的时候,比如说小学初中,还是不错的。到高中大学,就有一些不成熟了。因为这实际上是一个竞技。很多东西前…...
Vscode:问题解决办法 及 Tips 总结
Visual Studio Code(简称VSCode)是一个功能强大的开源代码编辑器,广泛用于各种编程语言和开发场景,本博客主要记录在使用 VSCode 进行verilog开发时遇到的问题及解决办法,使用过程中的技巧 文章目录 扩展安装失败调试配…...
Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)
本文讲了如何在Excel中抠图头像,换背景色。 1,如何在Excel中抠图头像,换背景色 大家都知道在PS中可以很容易抠图头像,换背景色,其实Excel中也可以抠简单的图,换背景色。 ※所用头像图片为百度搜索&#x…...
vue项目动态div滚动条滑动到指定位置效果
标题首先我们得明确几个知识点 element.scrollIntoView this.$el.querySelector 文档对象模型Document引用的 querySelector() 方法返回文档中与指定选择器或选择器组匹配的第一个 Element对象。如果找不到匹配项,则返回null。 用来匹配动态document 代码 // t…...
2K高刷电竞显示器怎么选?
2K高刷电竞显示器怎么选?哪个价格适合你?哪个配置适合你呢? 1.HKC G27H2Pro - 2K高刷电竞显示器怎么选 外观设计 - HKC G27H2Pro 2K高刷电竞显示器 电竞风拉满:作为猎鹰系列的一员,背部 “鹰翼图腾” 切割线搭配炎红…...
Codeforces Round 1000 (Div. 2)-C题(树上两个节点不同边数最大值)
https://codeforces.com/contest/2063/problem/C 牢记一棵树上两个节点如果相邻,它们有一条边会重叠,两个节点延伸出去的所有不同边是两个节点入度之和-1而不是入度之和,那么如果这棵树上有三个节点它们的入度都相同,那么优先选择非相邻的两个节点才能使所有不同边的数量最大!!…...
【2024年华为OD机试】 (E卷,200分) - 寻找符合要求的最长子串(JavaScriptJava PythonC/C++)
一、问题描述 给定一个字符串 s,找出满足以下条件的最长子串: 任意一个字符最多出现2次:子串中的每个字符在子串中出现的次数不能超过2次。子串不包含指定字符:子串不能包含输入的指定字符。 请找出满足该条件的最长子串的长度…...
c++常见设计模式之装饰器模式
基础介绍 装饰器模式是结构型设计模式,从字面意思看装饰器设计模式就是用来解决在原有的实现基础上添加一些额外的实现的问题。那么正统的概念是什么呢?装饰器模式允许我们动态的向对象添加新的 行为,同时不改变其原有的结构。它是一种比继承…...
如何在Python中进行数据分析?
数据分析是现代数据科学中的核心环节之一,它能够帮助我们从数据中提取有价值的信息,并为决策提供依据。在Python中,进行数据分析非常方便,因为Python有着丰富的库和工具,能够帮助处理和分析各种类型的数据。本篇文章将…...
linux网络 | 传输层TCP | 认识tcp报头字段与分离
前言: 本节内容继续传输层的讲解, 本节讲解的是tcp协议。 tcp协议是我们日常中最常用的协议。就比如我们浏览网页,我们知道网页时http或者https协议。 其实http或者https底层就是用的tcp协议。tcp协议,全名又称为传输控制协议&…...
定位,用最通俗易懂的方法2.1:CRLB实例
二郎就不设置什么VIP可见啥的了,这样大家都能看到。 如果觉得受益,可以给予一些打赏,也算对原创的一些鼓励,谢谢。 钱的用途:1)布施给他人;2)二郎会有更多空闲时间写教程 起因&…...
深入内核讲明白Android Binder【三】
深入内核讲明白Android Binder【三】 前言一、服务的获取过程内核源码解析1. 客户端获取服务的用户态源码回顾2. 客户端获取服务的内核源码分析2.1 客户端向service_manager发送数据1. binder_ioctl2. binder_ioctl_write_read3. binder_thread_write4. binder_transaction4.1 …...
vim如何显示行号
:set nu 显示行号 :set nonu 不显示行号...
【线性代数】列主元法求矩阵的逆
列主元方法是一种用于求解矩阵逆的数值方法,特别适用于在计算机上实现。其基本思想是通过高斯消元法将矩阵转换为上三角矩阵,然后通过回代求解矩阵的逆。以下是列主元方法求解矩阵 A A A 的逆的步骤: [精确算法] 列主元高斯消元法 步骤 1&am…...
T-SQL语言的数据库编程
T-SQL语言的数据库编程 1. 引言 在信息化迅速发展的今天,数据库已经成为数据管理和使用的重要工具。其中,T-SQL(Transact-SQL)作为微软SQL Server的扩展SQL语言,不仅用于数据查询和管理,还能够进行复杂的…...
【Linux】18.Linux进程控制(2)
文章目录 3. 进程程序替换3.1 单进程版 -- 看看程序替换3.2 替换原理3.3 替换函数函数解释命名理解 3.4 多进程版 -- 验证各种程序替换接口3.5 自定义shell 3. 进程程序替换 3.1 单进程版 – 看看程序替换 makefile mycommand:mycommand.cgcc -o $ $^ -stdc99 .PHONY:clean …...
在 Ubuntu 上安装 MySQL 的详细指南
在Ubuntu环境中安装 mysql-server 以及 MySQL 开发包(包括头文件和动态库文件),并处理最新版本MySQL初始自动生成的用户名和密码,可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南,包括从官方仓库和MySQL官方…...
Hive: Hive的优缺点,使用方式,判断Hive是否启动(jps),元数据的存储,Hive和Hadoop的关系
hive 是一个构建在 Hadoop 上的数据仓库 工具 ( 框架 ) ,可以将结构化的数据文件映射成一张数据表,并可以使用类sql 的方式来对这样的数据文件进行读,写以及管理(包括元数据)。这套 HIVE SQL 简称 HQL。 hive 的执行引…...
Social LSTM:Human Trajectory Prediction in Crowded Spaces | 文献翻译
概要 行人遵循不同轨迹以避免障碍物和容纳同行者。任何在这种场景中巡航的自动驾驶车辆都需要能够遇见行人的未来位置并相应地调整其路线以避免碰撞。轨迹预测问题能够被看作一个顺序生成任务,其中我们对基于行人过去的位置预测其未来的轨迹感兴趣。根据最近RNN&am…...
前后端交互过程
一、前后端交互过程 前后端交互是指客户端(前端)与服务器(后端)之间的数据通信。以下是一个典型的前后端交互流程: 前端请求: 用户在浏览器上与前端界面交互,如点击按钮、提交表单。前端使用 A…...
【计算机视觉】人脸识别
一、简介 人脸识别是将图像或者视频帧中的人脸与数据库中的人脸进行对比,判断输入人脸是否与数据库中的某一张人脸匹配,即判断输入人脸是谁或者判断输入人脸是否是数据库中的某个人。 人脸识别属于1:N的比对,输入人脸身份是1&…...
Spark Streaming的核心功能及其示例PySpark代码
Spark Streaming是Apache Spark中用于实时流数据处理的模块。以下是一些常见功能的实用PySpark代码示例: 基础流处理:从TCP套接字读取数据并统计单词数量 from pyspark import SparkContext from pyspark.streaming import StreamingContext# 创建Spar…...
高效实现 Markdown 转 PDF 的跨平台指南20250117
高效实现 Markdown 转 PDF 的跨平台指南 引言 Markdown 文件以其轻量化和灵活性受到开发者和技术写作者的青睐,但如何将其转换为易于分享和打印的 PDF 格式,是一个常见需求。本文整合了 macOS、Windows 和 Linux 三大平台的转换方法,并探讨…...
冯诺依曼架构和哈佛架构的主要区别?
冯诺依曼架构(Von Neumann Architecture)和哈佛架构(Harvard Architecture)是两种计算机体系结构,它们在存储器组织、指令处理和数据存取等方面有明显的不同。以下是它们的主要区别: 1.存储器结构 冯诺依曼…...
AI 新动态:技术突破与应用拓展
目录 一.大语言模型的持续进化 二.AI 在医疗领域的深度应用 疾病诊断 药物研发 三.AI 与自动驾驶的新进展 四.AI 助力环境保护 应对气候变化 能源管理 后记 在当下科技迅猛发展的时代,人工智能(AI)无疑是最具影响力的领域之一。AI 技…...
Java锁 从乐观锁和悲观锁开始讲 面试复盘
目录 面试复盘 Java 中的锁 大全 悲观锁 专业解释 自我理解 乐观锁 专业解释 自我理解 悲观锁的调用 乐观锁的调用 synchronized和 ReentrantLock的区别 相同点 区别 详细对比 总结 面试复盘 Java 中的锁 大全 悲观锁 专业解释 适合写操作多的场景 先加锁可以…...
【RabbitMq】RabbitMq高级特性-延迟消息
延迟消息 什么是延迟消息死信交换机延迟消息插件-DelayExchange其他文章 什么是延迟消息 延迟消息:发送者发送消息时指定一个时间,消费者不会立刻收到消息,而是在指定时间之后才收到消息。 延迟任务:设置在一定时间之后才执行的任…...
MindAgent:基于大型语言模型的多智能体协作基础设施
2023-09-18 ,加州大学洛杉矶分校(UCLA)、微软研究院、斯坦福大学等机构共同创建的新型基础设施,目的在评估大型语言模型在游戏互动中的规划和协调能力。MindAgent通过CuisineWorld这一新的游戏场景和相关基准,调度多智…...
Linux内存管理(Linux内存架构,malloc,slab的实现)
文章目录 前言一、Linux进程空间内存分配二、malloc的实现机理三、物理内存与虚拟内存1.物理内存2.虚拟内存 四、磁盘和物理内存区别五、页页的基本概念:分页管理的核心概念:Linux 中分页的实现:总结: 六、伙伴算法伙伴算法的核心…...
【机器学习实战中阶】比特币价格预测
比特币价格预测项目介绍 比特币价格预测项目是一个非常有实用价值的机器学习项目。随着区块链技术的快速发展,越来越多的数字货币如雨后春笋般涌现,尤其是比特币作为最早的加密货币,其价格波动备受全球投资者和研究者的关注。本项目的目标是…...
【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例
在Java应用程序的性能调优和故障排查中,jmap(Java Memory Map)是一个不可或缺的工具。它可以帮助开发者分析Java堆内存的使用情况,生成堆转储文件(Heap Dump),并查看内存中的对象分布。无论是内…...
使用vscode在本地和远程服务器端运行和调试Python程序的方法总结
1 官网下载 下载网址:https://code.visualstudio.com/Download 如下图所示,可以分别下载Windows,Linux,macOS版本 历史版本下载链接: https://code.visualstudio.com/updates 2 安装Python扩展工具 打开 VS Code,安装 Microsoft 提供的官…...
AI 编程工具—Cursor 对话模式详解 Chat、Composer 与 Normal/Agent 模式
Cursor AI 对话模式详解:Chat、Composer 与 Normal/Agent 模式 一、简介 Cursor 是一个强大的 AI 辅助编程工具,它提供了多种对话模式来满足不同的开发需求。主要包括: Chat 模式:直接对话交互Composer 模式:结构化编程助手Normal/Agent 模式:不同的 AI 响应策略打开Ch…...