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

【C语言】位运算 {位运算的应用 :关闭位,判断位,打开位,转置位;位域}

一、基础

  1. 参与位运算的对象只能是整型数据(int, unsigned, char),不能为实型

  2. 移位操作符

    • 按位左移n位表示:原数*2^n
    • 按位右移n位表示:原数/2^n(整除)
    • 上述运算只适用于左右移位时被溢出舍弃的位不包含1的情况

二、位运算的应用

掩码:一串二进制数字通过与目标数字进行按位操作来达到屏蔽指定位的需求而实现的。掩码具有目标性,关注位为1。

  1. 按位与

    • 关闭位(清零)[~掩码&目标值]

      举例:关闭第4位和第7位
      11001000 //目标
      01001000 //掩码
      10110111 //~掩码
      10000000 //结果

    • 判断位(取一个数中的某些指定位)[掩码 & 目标值]

      举例:判断后四位
      11001010 //目标
      00001111 //掩码
      00001010 //结果

    • 其他

      字符小写转大写:ch&=~32;

      提示:对应大小写字母ASSIC码的二进制数只有第六位不同,因此可以通过操作第六位实现大小的相互写转换

  2. 按位或

    • 打开位(对一个数据的某些位赋1)[掩码 | 目标值]

      举例:打开3,4,6,8位
      11001010 //目标
      00110101 //掩码
      11111111 //结果

    • 其他

      字符大写转小写:ch|=32;

  3. 按位异或

    • 转置位(使指定位翻转)[掩码 ^ 目标值]

      举例:转置第2,5位

      11000000 //目标

      01001000 //掩码

      10001000 //结果

    • 其他

      1. 交换两变量的值:a=a^b; b=a^b; a=a^b;
      2. 字符大小写互换:ch^=32;
      3. 两个相同的整数按位异或得0
      4. 任何整数与0按位异或都得它本身

三、位域

在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/11865.html

相关文章:

  • SQL50题
  • 星期-时间范围选择器 滑动选择时间 最小粒度 vue3
  • Unity 网格模型及优化
  • 2024AAAI | DiffRAW: 利用扩散模型从手机RAW图生成单反相机质量的RGB图像
  • 无人机反制技术与方法:主动防御,被动防御技术原理详解
  • MATLAB实战 利用1D-DCGAN生成光谱或信号数据
  • 服装标签二维码,要如何制作?含品牌案例
  • SQL Server 数据操控,视图和索引
  • copilot使用教程
  • X509证书以及相关java常用接口
  • 如何采药才最值当——记忆化搜索
  • 锁子甲 bulid+sim
  • 【SpringBoot】使用JWT验证
  • Redis 6.0的多线程是如何工作的
  • 决策树算法介绍
  • MySQL索引及SQL优化
  • SpringBoot中对Bean的处理方法以及第三方Bean处理的方式
  • 快问快答--时间序列常用的数据增强方法有哪些?python有集成库吗?
  • pandas中df.groupby详解?
  • 车企跨界背后,智能手机进入新增长时代
  • BBR算法
  • C++——模板初阶与泛型编程
  • 【Linux】进程地址空间
  • 两层神经网络的参数求导过程
  • Redis分布式锁的实现方式及底层原理
  • 数字图像处理(第三版)绪论笔记