美文网首页
【tip】位运算小技巧

【tip】位运算小技巧

作者: papi_k的小茅屋 | 来源:发表于2023-11-07 23:34 被阅读0次

首先定义一个C语言结构体AAA,注意其中resv保留字段占用了一个char型的3位:

typedef struct tagAAA {

    int a;

    int b;

    char c:1, d:2, e:2, resv:3;

    char flag;

} AAA;

#define WC 4

AAA *temp;

1.如果要判断保留位的值,比如resv字段,可以直接判断。

if (temp->resv == WC)

如果使用位运算的判断方式,如何编写呢?

1)如果要识别3位中的某一位是否等于WC,比如第一位是否置1,则可以这么写:

if ((temp->resv & 0x4) == WC) // 4的二进制是100,用于识别第一位

2)如果要识别3位中的所有位是否等于WC,则可以这么写:

if ((temp->resv & 0x7) == WC) // 7的二进制是111,此时resv需要是100才可能等于WC

2.那如何对其中某一位置1呢?

当前resv一共有3位二进制(000),比如想对首位的值置1(1XX),其他位保持不变:

temp->resv |= 4; // 4二进制位100,按位或可以达到目的

3.那如何对其中某一位置0呢?

当前resv一共有3位二进制(000),比如想对首位的值置0(0XX),其他位保持不变:

temp->resv &= (~4);// 100取反相当于是011,按位与可以达到目的


附:拓展知识(你知道4取反的结果是几么?)

你不会还不知道按位取反运算的原理吧

yo peace!

相关文章

  • 位运算小技巧

    位运算的一些小技巧,C语言描述,翻译自bithacks 计算一个整数(integer)的符号 上面最后一个语句使用...

  • 位运算使用小技巧

    背景   位运算在实际工作中可能会较少被重视,但是在有些情况下位运算会带来性能的极大提升,值得我们深入了解。同时,...

  • 位运算技巧

    消除x最后一位1:x & (x - 1)Go代码: 一、用O(1) 时间检测整数 n 是否是 2 的幂次。分析:如...

  • 位运算技巧

    基础知识 对于位运算,大家都很熟悉,基本的位操作有与(&)、或(|)、非(~)、异或(^)等等。在面试中经常会出现...

  • 位运算技巧

    位运算技巧的总结 1. 位运算基础 与(&)两个比特位同时为1结果为1,否则为0 或(|)只要有一个为1结果就为1...

  • Python基础之位运算符(含原码反码补码的通俗解释)

    目录 1 二进制 2 原码、反码、补码 3 位运算符 4 位运算符使用技巧 上回学习运算符时,漏了位运算符,因为位...

  • 位运算常见技巧

    在新浪微博上看到一篇文章写位运算的写的很深入,文章链接见末尾,特此mark。 0.位运算的种类 markdown中...

  • 位运算的技巧

    位运算的技巧 基本 and 运算 通常用于二进制取位操作。 例如,and 1就是取二进制末位,可以用来判断一个数的...

  • 算法技巧-位运算

    将只有两种状态的一组对象用二进制进行表示是一种常用建模方法,因此位运算技巧是比较重要的。 位操作经典题目:37. ...

  • 位运算

    参考:位运算技巧 位运算的使用 1.and运算and运算通常用于二进制取位操作,例如一个数and1的结果就是取二进...

网友评论

      本文标题:【tip】位运算小技巧

      本文链接:https://www.haomeiwen.com/subject/oiqxwdtx.html