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

news/2025/2/13 0:16:34/

一、基础

  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.ppmy.cn/news/47859.html

相关文章

文本批量翻译-批量翻译文件名

批量将英文翻译成中文的软件 批量将英文翻译成中文的软件的主要用途场景主要是在需要大量翻译英文文本到中文的场景下使用,例如: 商务文件翻译:许多企业需要将其商务文件,如合同、报告、信函等翻译成中文,以便其中文读…

springboot+vue职称评审管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的职称评审管理系统。项目源码请联系风歌,文末附上联系信息 。 目前有各类成品java毕设,需要请看文末联系方式 …

Redis(03)List--附有示例

文章目录 reids-listBLMOVEBLMPOPBLPOPBRPOPBRPOPLPUSHLINDEXLINSERTLLENLMOVELMPOPLPOPLPOSLPUSHLPUSHXLRANGELREMLSETLTRIMRPOPRPOPLPUSHRPUSHRPUSHX reids-list 本文介绍了Redis中的表命令。LSET用于设置列表中指定索引位置的元素的值;LTRIM用于按照索引范围修剪…

取消调休?这个公司好像知道员工要什么...

今年的五一小长假3天变5天,比以往多2天,但是为了多出来的这两天,前一个周末的周日,也就是本周的周日4月23日,要正常上班一天。 五一回来后的5月6日,也就是回来后的那个周六,也要上班&#xff0…

测试参持之以恒兵勋章活动

测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动 测试参加勤写标兵勋章活动…

【Spring篇】Spring入门案例

🍓系列专栏:Spring系列 🍉个人主页:个人主页 目录 一、IOC入门案例 1.入门案例思路分析 2.入门案例代码实现 二、DI入门案例 1.入门案例思路分析 2.入门案例代码实现 三、图书推荐 介绍完Spring的核心概念后,接下来我们得思考一个问题…

重写equlas时为什么一定要重写hashcode方法?

equals方法和hashCode方法都是Object类中的两个基本方法,它们共同来判断两个对象是否相等。为什么要两个方法结合起来使用呢?原因是在 ‘性能’ 上面。 使用过 hashMap 我们知道,通过 hash 计算 ,可以快速的在常量时间内找到某个…