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

C语言:位运算

位运算


<<:左移,按位左移


说明:原操作数所有的二进制位数向左整体移动指定位。(小端模式下:高舍低补)

无符号左移

  • 语法:

 操作数 << 移动位数
  • 举例:

 unsigned char a = 3 << 3; // 24 将3左移3位,可以套用公式:3 * 2 ^ 3unsigned int b = 5 << 4; // 80 将5左移4位,可以套用公式:5 * 2 ^ 4

有符号左移


  • 语法:

 操作数 << 移动位数
  • 举例:

 int a = -3 << 3; // -24 将3左移3位,可以套用公式:-3 * 2 ^ 3int a = 240 << 2; // 960 将3左移3位,可以套用公式:240 * 2 ^ 2

  • 注意:

    • 如果符号位被覆盖或者一处高位全为1时溢出或者极端溢出时,公式不适用,其他使用都可以使用公式:

a * 2 ^ n

>>:右移,按位右移


说明:原操作数所有的二进制数据整体向右移动指定位,移动的数据舍弃。(高补低舍)

如果操作数是无符号数:左边用0补齐

如果操作数是有符号数:左边用什么补全,取决于计算机系统

  • 逻辑右移:用0补全

  • 算数右移:==由符号位决定补什么,符号位是1,就用1来补全,如果符号位是0,就用0来补全

大部分情况下,系统都遵循“算数右移”;

无符号右移


语法:

 操作数 >> 移动位数

举例:

 ubsigned char a = 3 >> 3; // 0

演示:

有符号右移


语法:

 操作数 >> 移动位数

举例:

 char a = 3 >> 3; // -1

演示:

关于移位运算过程:

原数据 → 二进制原码 → 二进制反码 → 二进制补码 → 移位运算 → 二进制反码 → 二进制原码 → 特定进制数据

http://www.dtcms.com/a/274993.html

相关文章:

  • Redis 哨兵机制
  • 多代理系统(multi-agent)框架深度解析:架构、特性与未来
  • 无代码自动化测试工具
  • STM32G473串口通信-USART/UART配置和清除串口寄存器状态的注意事项
  • 隆重介绍 Xget for Chrome:您的终极下载加速器
  • 开源界迎来重磅核弹!月之暗面开源了自家最新模型 K2
  • 从延迟测试误区谈起:SmartPlayer为何更注重真实可控的低延迟?
  • gitee 代码仓库面试实际操作题
  • Cadence Virtuoso中如何集成Calibre
  • Java进阶---并发编程
  • 打造未来制造核心力:虚拟调试的价值与落地思路
  • YOLO-DETR如何提升小目标的检测效果
  • 【数据结构与算法】数据结构初阶:详解顺序表和链表(三)——单链表(上)
  • OpenCV实现感知哈希(Perceptual Hash)算法的类cv::img_hash::PHash
  • 商城网站建设实务
  • Ragflow-plus本地部署和智能问答及报告编写应用测试
  • 标准化模型格式ONNX介绍:打通AI模型从训练到部署的环节
  • C语言易错点(二)
  • C++包管理工具:conan2常用命令详解
  • JVM-----【并发可达性分析】
  • Android 12系统源码_分屏模式(一)从最近任务触发分屏模式
  • 微信小程序核心知识点速览
  • OpenCV图像基本操作:读取、显示与保存
  • OpenLLMetry 助力 LLM 应用实现可观测性
  • 1-Git安装配置与远程仓库使用
  • uniapp---入门、基本配置了解
  • springboot-2.3.3.RELEASE升级2.7.16,swagger2.9.2升级3.0.0过程
  • 猿人学js逆向比赛第一届第十九题
  • 大数据在UI前端的应用深化:用户行为数据的跨渠道整合分析
  • MinIO配置项速查表【五】