C_位运算符及其在单片机寄存器的操作
C语言的位运算符用于直接操作二进制位,本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。
一、位运算符的简单说明
1、按位与运算符(&
)
- 功能:按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制位都是1,则结果为1,否则为0。(有0为0,全1为1)
- 示例:
int a = 5; // 0101 int b = 3; // 0011 int result = a & b; // 0001 -> 1
2、按位或运算符(|
)
- 功能:按位或运算符对两个操作数的每一位执行或操作。如果两个对应的二进制位中至少有一个是1,则结果为1,否则为0。(有1为1,全0为0)
- 示例:
int a = 5; // 0101 int b = 3; // 0011 int result = a | b; // 0111 -> 7
3、按位异或运算符(^
)
- 功能:按位异或运算符对两个操作数的每一位执行异或操作。如果两个对应的二进制位相同,则结果为0;如果不同,则结果为1。(相同为1,不同为0)
- 示例:
int a = 5; // 0101 int b = 3; // 0011 int result = a ^ b; // 0110 -> 6
- 补充: 按位异或运算符也可以用来交换2个变量的数值。交换2个变量1的数值我们常用的方法是定义一个临时变量来暂时存储一个变量的值,当如果不想多定义一个变量就可以采用按位异或运算符来操作,具体方法如下:
4、按位取反运算符(~
)
- 功能:按位取反运算符对操作数的每一位执行取反操作,即将0变为1,将1变为0。(0变1,1变0)
- 示例:
int a = 5; // 0101 int result = ~a; // 1010 -> -6(在补码表示下)
5、左移运算符(<<
)
- 功能:左移运算符将操作数的二进制位向左移动指定的位数。左移时,空出的低位用0填充。(整体左移,低位补0,高位不一定舍弃)
- 说明: 整体左移后结果取决于赋值给什么类型的变量,从低到高截位,并不是简单的高位舍弃如果高位没有舍弃,数据左移一位就扩大一倍。如图:
- 示例:
int a = 5; // 0101 int result = a << 1; // 1010 -> 10
6、右移运算符(>>
)
- 功能:右移运算符将操作数的二进制位向右移动指定的位数。对于无符号数,空出的高位用0填充;对于有符号数,空出的高位根据符号位填充(算术右移)。(整体右移,低位舍弃,有符号数高位补最高位的数字)
- 说明:无符号数高位补0,有符号数高位补最高位的数字,数据右移一位就缩小一倍(除以2并舍去余数)。如图:
- 示例:
int a = 5; // 0101 int result = a >> 1; // 0010 -> 2
7. 复合赋值运算符
运算符也可以与赋值运算符组合,形成复合赋值运算符:
- 按位与赋值:
&=
- 按位或赋值:
|=
- 按位异或赋值:
^=
- 左移赋值:
<<=
- 右移赋值:
>>=
二、位运算符的运用
1、用按位与运算符(&)将变量的某位置0
有一个变量char a = 0b1111 1111,要将其的第n位置0(最右一位为第0位),只需要将其按位与上一个第n位为0,其余为都为1的数据。
char a = 0b11111111
char b = 0b11110111
a &= b;
这样a的第3位就会被置0;
2、用按位或运算符(|)将变量的某位置1
有一个变量char a = 0b0000 0000,要将其的第n位置1(最右一位为第0位),只需要将其按位或上一个第n位为1,其余为都为0的数据。
char a = 0b00000000
char b = 0b00001000
a |= b;
这样a的第3位就会被置1;
3、用左移运算符(<<)和按位或运算符(|)进行数据合成
①将两个8位数据合成一个16位数据
将第一个数据左移8位后按位或上第二个数据
#include <stdio.h>int main() {unsigned char a = 0x34; // 8位数据,十六进制:34unsigned char b = 0x12; // 8位数据,十六进制:12unsigned short result = (a << 8) | b; // 左移a并与b按位或,合成16位数据printf("合成的16位数据: 0x%0X\n", result); // 输出:0x3412return 0;
}
②将两个16数据合成一个32位数据
将第一个数据左移16位后按位或上第二个数据
#include <stdio.h>int main() {unsigned short x = 0x1234; // 16位数据,十六进制:1234unsigned short y = 0xABCD; // 16位数据,十六进制:ABCDunsigned int result = (x << 16) | y; // 左移x并与y按位或,合成32位数据printf("合成的32位数据: 0x%0X\n", result); // 输出:0x1234ABCDreturn 0;
}
③将一个8位数据和一个16位数据合成一个32位数据
#include <stdio.h>int main() {unsigned char a = 0x12; // 8位数据,十六进制:12unsigned short b = 0xABCD; // 16位数据,十六进制:ABCDunsigned int result = (a << 16) | b; // 左移a和b并合成32位数据printf("合成的32位数据: 0x%0X\n", result); // 输出:0x12ABCDreturn 0;
}
4、截取一个数据的某部分字节
①截取一个数据的低字节
截取低字节可以用赋值运算符或者强制转换。
例如:截取0xABCD中的0xCD
#include <stdio.h>int main() {unsigned short a = 0xABCD; // 16位数据,十六进制:ABCDunsigned char b = a; // 将16位数据a赋值给8位数据bprintf("%0X\n", (unsigned char)a); // 强制转换为8位,并输出低字节printf("%0X\n", b); // 输出b的值return 0;
}
②截取一个数据的高字节或中间字节
截取高字节或中间字节可以将数据右移后再用赋值运算符或者强制转换
#include <stdio.h>int main() {unsigned short a = 0xABCD; // 16位数据,十六进制:ABCDunsigned int b = 0x1234ABCD; // 32位数据,十六进制:1234ABCD// 第一个 printf:将 a 右移8位,得到高字节,然后转换为 unsigned charprintf("%0X\n", (unsigned char)(a >> 8));// 第二个 printf:将 b 右移12位,得到高字节部分的前两位,然后转换为 unsigned charprintf("%0X\n", (unsigned char)(b >> 12));return 0;
}
③分别截取一个数据的低字节,中间字节和高字节合成一个新数据
#include<stdio.h>int main(void)
{unsigned short a = 0xaabb;unsigned short b = 0xccdd;unsigned short c = 0xeeff;unsigned int d = (a & 0x00ff) | (b & 0x0ff0)<<4 | (c & 0xff00)<<8 ;printf("%x",d);
}
5、对寄存器进行操作
假设你有一个 u32
类型的变量 temp
,表示一个 32 位的寄存器。
①对寄存器的某一位写0
将temp变量的第n位置0,其他位不变
规律:temp &= ~(1 << n)
②对寄存器的某一位写1
将temp变量的第n位置1,其他位不变
规律:temp |= (1 << n)
③对寄存器的某连续两位操作
1.将temp变量的第n和第n+1位置0,其他位不变
规律:temp &= ~(3 << n)
2. 将temp变量的第n和第n+1位置1,其他位不变
规律:temp |= (3 << n)
3.将temp变量的第n和第n+1位置01或10,其他位不变
先将第n和第n+1位清0: temp &= ~(1 << n)
01:temp |= (1 << n)
10:temp |= (2 << n)
4.将temp的第2位第4位第5位置0,其他位保持不变
temp &= ~ (1<<2|1<<4|1<<5);
5.将temp的第n位进行翻转,其他位保持不变
temp ^ = (1<<n);
三、位运算操作GPIO寄存器_LED
本篇示例所用的芯片型号为STM32F103,先创建好keil工程并配置好环境。
要操作LED灯的亮灭,我们要将对于GPIO端口设置为通用推挽输出模式。
这是一个已经创建好的keil工程,目前只有一个延时函数和基本的框架,接下来我们通过查找芯片手册配置寄存器来点亮LED灯。
通过原理图我们可以看出LED0接在PB5端口上,LED1接在PE5端口上。 因此要点亮LED0和LED1,我们就需要对PB5和PE5端口进行操作,端口输出低电平灯亮,输出高电平灯灭。
我们翻看芯片手册的目录,找到系统架构 。
可以看到 GPIOB和GPIOE都是挂载在APB2总线上的,因此我们首先需要对APB2进行时钟使能。
翻看目录,找到APB2 外设时钟使能寄存器(RCC_APB2ENR)。
要开启IO端口B和IO端口的时钟,我们需要将寄存器RCC_APB2ENR的位3和位6置1。
具体操作如下:
接着翻看目录,找到端口配置寄存器。
我们需要将PB5和PE5设置为通用推挽输出模式 ,PB5和PE5的配置方法是一样的,需要将寄存器GPIOx_CRL的位21和位20置01,位23和位22置00。
具体操作如下:
最后找到端口输出数据寄存器(GPIOx_ODR) (x=A..E)
将寄存器GPIOB_ODR/GPIOE_ODR的位5置1则端口PB5/PE5输出高电平,置0则输出低电平。
具体操作如下:
烧录后效果如下:
LED
相关文章:
C_位运算符及其在单片机寄存器的操作
C语言的位运算符用于直接操作二进制位,本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。 一、位运算符的简单说明 1、按位与运算符(&) 功能:按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制…...
Rust错误处理:从灭火器到核按钮的生存指南
开篇:错误处理的生存哲学 在Rust的平行宇宙里,错误分为两种人格: panic! → 核按钮💣(不可恢复,全系统警报)Result → 灭火器🧯(可控制,局部处理࿰…...
YK人工智能(六)——万字长文学会基于Torch模型网络可视化
1. 可视化网络结构 随着深度神经网络做的的发展,网络的结构越来越复杂,我们也很难确定每一层的输入结构,输出结构以及参数等信息,这样导致我们很难在短时间内完成debug。因此掌握一个可以用来可视化网络结构的工具是十分有必要的…...
对象的实例化、内存布局与访问定位
一、创建对象的方式 二、创建对象的步骤: 一、判断对象对应的类是否加载、链接、初始化: 虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化…...
Java面试题2025-并发编程进阶(线程池和并发容器类)
线程池 一、什么是线程池 为什么要使用线程池 在开发中,为了提升效率的操作,我们需要将一些业务采用多线程的方式去执行。 比如有一个比较大的任务,可以将任务分成几块,分别交给几个线程去执行,最终做一个汇总就可…...
Vue Router 客户端路由解决方案:axios 响应拦截(跳转到登录页面)
文章目录 引言客户端路由 vs. 服务端路由简单的路由案例术语I Vue Router 提供的组件RouterLinkRouterViewII 创建路由器实例调用 createRouter() 函数创建路由选项III 注册路由器插件通过调用 use() 来完成注册路由器插件的职责对于组合式 API,Vue Router 给我们提供了一些组…...
Redis的通用命令
⭐️前言⭐️ 本文主要介绍Redis的通用命令 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及博主日常练习代码均已上传GitHub 📍内容导…...
[Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测
从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建回归神经网络。这篇文章将介绍如何利用PyTorch构建神经网络实现分类预测,其是使用基础模块构建。前面我们的Python人工智能主要以TensorFlow和Keras为主,而现在最主流的深度学习框…...
SpringBoot使用 easy-captcha 实现验证码登录功能
文章目录 一、 环境准备1. 解决思路2. 接口文档3. redis下载 二、后端实现1. 引入依赖2. 添加配置3. 后端代码实现4. 前端代码实现 在前后端分离的项目中,登录功能是必不可少的。为了提高安全性,通常会加入验证码验证。 easy-captcha 是一个简单易用的验…...
RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)
#作者:闫乾苓 文章目录 RabbitMQ简介RabbitMQ与VMware的关系架构工作流程RabbitMQ 队列工作模式及适用场景简单队列模式(Simple Queue)工作队列模式(Work Queue)发布/订阅模式(Publish/Subscribeÿ…...
Unity中的虚拟相机(Cinemachine)
Unity Cinemachine详解 什么是Cinemachine Cinemachine是Unity官方推出的智能相机系统,它提供了一套完整的工具来创建复杂的相机运动和行为,而无需编写大量代码。它能够大大简化相机管理,提高游戏开发效率。 Cinemachine的主要组件 1. Vi…...
响应式编程_04Spring 5 中的响应式编程技术栈_WebFlux 和 Spring Data Reactive
文章目录 概述响应式Web框架Spring WebFlux响应式数据访问Spring Data Reactive 概述 https://spring.io/reactive 2017 年,Spring 发布了新版本 Spring 5, Spring 5 引入了很多核心功能,这其中重要的就是全面拥抱了响应式编程的设计思想和实…...
网络设备的安全加固
设备的安全始终是信息网络安全的一个重要方面,攻击者往往通过控制网络中设备来破坏系统和信息,或扩大已有的破坏。网络设备包括主机(服务器、工作站、PC)和网络设施(交换机、路由器等)。 一般说来ÿ…...
OpenCV:特征检测总结
目录 一、什么是特征检测? 二、OpenCV 中的常见特征检测方法 1. Harris 角点检测 2. Shi-Tomasi 角点检测 3. Canny 边缘检测 4. SIFT(尺度不变特征变换) 5. ORB 三、特征检测的应用场景 1. 图像匹配 2. 运动检测 3. 自动驾驶 4.…...
Java高频面试之SE-17
hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 Java缓冲区溢出,如何解决? 在 Java 中,缓冲区溢出 (Buffer Overflow) 虽然不是像 C/C 中那样直接可见…...
移动机器人规划控制入门与实践:基于navigation2 学习笔记(一)
课程实践: (1)手写A*代码并且调试,总结优缺点 (2)基于Gazebo仿真,完成给定机器人在给定地图中的导航调试 (3)使用Groot设计自己的导航行为树 掌握一门技术 规划控制概述 常见移动机器人...
每日一题洛谷P5721 【深基4.例6】数字直角三角形c++
#include<iostream> using namespace std; int main() {int n;cin >> n;int t 1;for (int i 0; i < n; i) {for (int j 0; j < n - i; j) {printf("%02d",t);t;}cout << endl;}return 0; }...
RTMP 和 WebRTC
WebRTC(Web Real-Time Communication)和 RTMP(Real-Time Messaging Protocol)是两种完全不同的流媒体协议,设计目标、协议栈、交互流程和应用场景均有显著差异。以下是两者的详细对比,涵盖协议字段、交互流程及核心设计思想。 一、协议栈与设计目标对比 特性RTMPWebRTC传…...
数据库技术基础
1 数据库系统概述 1.1 数据库的4个概念 (1)数据(信息) 数据:指已记录或可获取的事实,是数据库存储的最小单元。除文本、数字外,还有图形、图像、声音等。 数据由于能为用户利用才被记录和保…...
如何获取sql数据中时间的月份、年份(类型为date)
可用自带的函数month来实现 如: 创建表及插入数据: create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份: select MONTH(begindate)…...
每日Attention学习18——Grouped Attention Gate
模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Grouped Attention Gate (GAG) 模块作用 轻量特征融合 模块结构 模块特点 特征融合前使用Group…...
分析用户请求K8S里ingress-nginx提供的ingress流量路径
前言 本文是个人的小小见解,欢迎大佬指出我文章的问题,一起讨论进步~ 我个人的疑问点 进入的流量是如何自动判断进入iptables的四表?k8s nodeport模式的原理? 一 本机环境介绍 节点名节点IPK8S版本CNI插件Master192.168.44.1…...
TensorFlow是个啥玩意?
TensorFlow是一个开源的机器学习框架,由Google开发。它可以帮助开发者构建和训练各种机器学习模型,包括神经网络和深度学习模型。TensorFlow的设计理念是使用数据流图来表示计算过程,其中节点表示数学运算,边表示数据流动。 Tens…...
初识C语言、C语言的学习方向总述与入门
目录 1. 什么是C语言? 2. 第一个C语言程序 3. 数据类型 4. 变量、常量 4.1 定义变量的方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的作用域和生命周期 4.5 常量 5. 字符串转义字符注释 5.1 字符串 5.2 转义字符 6. 注释 7. 选择语句 8. 循环语句 …...
零基础学习书生.浦语大模型-入门岛
第一关:Linux基础知识 任务一:Cursor连接SSH运行代码 使用Remote - SSH插件即可 运行指令 python hello_world.py端口映射 ssh -p 46561 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno 注:46561&a…...
【R语言】获取数据
R语言自带2种数据存储格式:*.RData和*.rds。 这两者的区别是:前者既可以存储数据,也可以存储当前工作空间中的所有变量,属于非标准化存储;后者仅用于存储单个R对象,且存储时可以创建标准化档案,…...
MongoDB学习笔记-解析jsonCommand内容
如果需要屏蔽其他项目对MongoDB的直接访问操作,统一由一个入口访问操作MongoDB,可以考虑直接传入jsonCommand语句解析执行。 相关依赖包 <!-- SpringBootDataMongodb依赖包 --> <dependency><groupId>org.springframework.boot</…...
国产编辑器EverEdit - 工具栏说明
1 工具栏 1.1 应用场景 当用户想显示/隐藏界面的标签栏、工具栏、状态栏、主菜单等界面元素时,可以通过EverEdit的菜单选项进行设置。 1.2 使用方法 选择菜单查看 -> 工具栏,在工具栏的子菜单中选择勾选或去掉勾选对应的选项。 标签栏࿱…...
linux 函数 sem_init () 信号量、sem_destroy()
(1) (2) 代码举例: #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …...
制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模
目录 1. 背景与挑战 2. 数据建模与采集 2.1 数据表设计 设备状态表(记录设备实时状态变更)...
密码学的数学基础1-素数和RSA加密
数学公式推导是密码学的基础, 故开一个新的课题 – 密码学的数学基础系列 素数 / 质数 质数又称素数。 一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数࿰…...
C++ Primer 算术运算符
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战
前一篇文章,Tensor 基本操作5 device 管理,使用 GPU 设备 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started PyTorch 计算图和 Autograd 微积分之于机器学习Computational Graphs 计算图Autograd…...
Vue 图片引用方式详解:静态资源与动态路径访问
目录 前言1. 引用 public/ 目录2. assets/ 目录3. 远程服务器4. Vue Router 动态访问5. 总结6. 扩展(图片不显示) 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 在 Vue 开发中&#x…...
熟练掌握Http协议
目录 基本概念请求数据Get请求方式和Post请求方式 响应数据响应状态码 基本概念 Http协议全称超文本传输协议(HyperText Transfer Protocol),是网络通信中应用层的协议,规定了浏览器和web服务器数据传输的格式和规则 Http应用层协议具有以下特点&#…...
爬虫学习笔记之Robots协议相关整理
定义 Robots协议也称作爬虫协议、机器人协议,全名为网络爬虫排除标准,用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件,一般放在网站的根目录下。 robots.txt文件的样例 对有所爬虫均生效&#…...
血压计OCR文字检测数据集VOC+YOLO格式2147张11类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2147 标注数量(xml文件个数):2147 标注数量(txt文件个数):2147 …...
正则表达式详细介绍
目录 正则表达式详细介绍什么是正则表达式?元字符转义字符字符类限定字符字符分枝字符分组懒惰匹配和贪婪匹配零宽断言 正则表达式详细介绍 什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想…...
初识ArkTS语言
文章目录 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和性能。 从…...
Go语言并发之美:构建高性能键值存储系统
摘要 本文介绍了基于Go语言实现的高性能并发键值存储系统。通过深入探讨Go语言在并发编程中的优势,文章详细阐述了系统的锁机制、分片优化、内存管理和持久化设计等关键环节。这些设计展示了如何在系统开发中进行有效的权衡,以确保最优性能。该系统不仅充…...
6. k8s二进制集群之各节点部署
获取kubernetes源码安装主节点(分别执行以下各节点命令)安装工作节点(同步kebelet和kube-proxy到各工作节点)总结 继续上一篇文章《k8s二进制集群之ETCD集群部署》下面介绍一下各节点的部署与配置。 获取kubernetes源码 https:/…...
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架
目录 前言 环境介绍 代码与动机 架构设计,优缺点 博客系列指引 前言 笔者前段时间花费了一周,整理了一下自从TM1637开始打算的,使用OLED来搭建一个通用的显示库的一个工程。笔者的OLED库已经开源到Github上了,地址在…...
spring基础总结
先修知识:依赖注入,反转控制,生命周期 IDEA快捷键 Ctrl Altm:提取方法,设置trycatch 通用快捷键: Ctrl F:在当前文件中查找文本。Ctrl R:在当前文件中替换文本。Ctrl Z:撤销…...
基础相对薄弱怎么考研
复习总体规划 明确目标 选择专业和院校:根据你的兴趣、职业规划和自身实力,选择适合自己的专业和院校。可以参考往年的分数线、报录比、复试难度等。了解考试科目:不同专业考试科目不同,一般包括: 公共课:…...
代码随想录36 动态规划
leetcode 343.整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 1…...
p5r预告信生成器API
p5r预告信生成器API 本人将js生成的p5r预告信使用go语言进行了重写和部署,并开放了其api,可以直接通过get方法获取预告信的png。 快速开始 http://api.viogami.tech/p5cc/:text eg: http://api.viogami.tech/p5cc/persona5 感谢p5r风格字体的制作者和…...
React图标库: 使用React Icons实现定制化图标效果
React图标库: 使用React Icons实现定制化图标效果 图标库介绍 是一个专门为React应用设计的图标库,它包含了丰富的图标集合,覆盖了常用的图标类型,如FontAwesome、Material Design等。React Icons可以让开发者在React应用中轻松地添加、定制各…...
说说Redis的内存淘汰策略?
大家好,我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助; 说说Redis的内存淘汰策略? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 提供了多种内存淘汰策略,用于在内存达到限制时决定如何…...
【C语言】自定义类型讲解
文章目录 一、前言二、结构体2.1 概念2.2 定义2.2.1 通常情况下的定义2.2.2 匿名结构体 2.3 结构体的自引用和嵌套2.4 结构体变量的定义与初始化2.5 结构体的内存对齐2.6 结构体传参2.7 结构体实现位段 三、枚举3.1 概念3.2 定义3.3 枚举的优点3.3.1 提高代码的可读性3.3.2 防止…...
机器学习8-卷积和卷积核1
机器学习8-卷积和卷积核1 卷积与图像去噪卷积的定义与性质定义性质卷积的原理卷积步骤卷积的示例与应用卷积的优缺点优点缺点 总结 高斯卷积核卷积核尺寸的设置依据任务类型考虑数据特性实验与调优 高斯函数标准差的设置依据平滑需求结合卷积核尺寸实际应用场景 总结 图像噪声与…...