当前位置: 首页 > news >正文

C语言-运算符

1. 按位与运算符(&

        按位与运算符对两个整数的每一位执行“与”操作。只有当两个相应位都为 1 时,结果才为 1

        ;否则为 0。

 
// 示例
int a = 5;      // 二进制: 0101
int b = 3;      // 二进制: 0011
int result = a & b;  // 结果: 0001,即 1

2. 按位或运算符(|

        按位或运算符对两个整数的每一位执行“或”操作。只要对应的位之一为 1,结果就为 1;

        只有两个位都是 0 时,结果才为 0。

// 示例
int a = 5;      // 二进制: 0101
int b = 3;      // 二进制: 0011
int result = a | b;  // 结果: 0111,即 7

3. 按位异或运算符(^)

        按位异或运算符对两个整数的每一位执行“异或”操作。当两个相应位不相同时,结果为 1;

        相同则为 0。

// 示例
int a = 5;      // 二进制: 0101
int b = 3;      // 二进制: 0011
int result = a ^ b;  // 结果: 0110,即 6

4. 按位取反运算符( ~ )

        按位取反运算符会将操作数的每一位都取反,即将 1 变为 0,将 0 变为 1。

// 示例
int a = 5;      // 二进制: 0101
int result = ~a;  // 结果: 1010(对于 32 位系统,它会是 -6)

5. 左移运算符(<<

        左移运算符将操作数的所有位向左移动指定的位数。移动时,空出的低位填充 0。

        左移实际上是将数字乘以 2 的指定次方。

// 示例
int a = 5;      // 二进制: 0101
int result = a << 1;  // 结果: 1010,即 10

6. 右移运算符(>>

        右移运算符将操作数的所有位向右移动指定的位数。对于无符号整数,空出的高位

        会填充 0;对于有符号整数,空出的高位会填充符号位(即补充 0 或 1,取决于符号位)。

        

// 示例
int a = 5;      // 二进制: 0101
int result = a >> 1;  // 结果: 0010,即 2

7. 算术右移与逻辑右移

        算术右移:保留符号位,高位补充符号位(负数补充 1,正数补充 0)。

        逻辑右移:无论符号,始终将高位补充为 0。

8. 使用场景

        位运算通常用于以下场景:

                优化性能:位运算通常比算术运算更高效。

                权限标志:在操作系统或嵌入式系统中,位运算常用于存储和检查多个状态位或权限

                标志。

                加密与解密:许多加密算法使用位运算。

                二进制数据处理:位运算常用于直接操作二进制数据,如图像处理、压缩算法等。

9. 总结

运算符描述示例
&按位与a & b
``按位或
^按位异或a ^ b
~按位取反~a
<<左移a << 1
>>右移a >> 1

位运算提供了高效、低级别的运算方式,用于处理二进制数据,广泛应用于系统编程和硬件控制等领域。

http://www.lryc.cn/news/525405.html

相关文章:

  • 困境如雾路难寻,心若清明步自轻---2024年创作回顾
  • 表格标签基本使用
  • 【学术会议论文投稿】深度解码:机器学习与深度学习的界限与交融
  • 使用printmap()函数来打印地图
  • MyBatis Plus 的 InnerInterceptor:更轻量级的 SQL 拦截器
  • Java复习第四天
  • docker 安装 mysql 详解
  • 本地Ubuntu轻松部署高效性能监控平台SigNoz与远程使用教程
  • 防火墙的会话并发数、端口数量及其关系‌
  • 随机变量的变量替换——归一化流和直方图规定化的数学基础
  • Java春招面试指南前言
  • 【技术洞察】2024科技绘卷:浪潮、突破、未来
  • 为AI聊天工具添加一个知识系统 之54 为事务处理 设计 基于DDD的一个 AI操作系统 来处理维度
  • 【数据结构】二分查找
  • 读书笔记《网络是怎样连接的》
  • Java 设计模式一
  • SOME/IP服务接口
  • Java 生成 PDF 文档 如此简单
  • 深入探究 YOLOv5:从优势到模型导出全方位解析
  • 【PoCL】运行 LLVM 中 pass 优化过程详解
  • 如何将使用unsloth微调的模型部署到ollama?
  • 【测试】UI自动化测试
  • SSM开发(二) MyBatis两种SQL配置方式及其对比
  • 【Redis】在ubuntu上安装Redis
  • JS-Web API -day06
  • JS-Web API -day03
  • 进程优先级
  • c语言(转义字符)
  • easyexcel读取写入excel easyexceldemo
  • 【人工智能数学基础篇】——深入详解矩阵分解:奇异值分解(SVD)与主成分分析(PCA)在数据降维与特征提取中的应用