int temp = 0x5E; // in binary 0b1011110.

有没有这样一种方法可以判断temp中的位3是1还是0,而不需要位移位和掩蔽.

我只是想知道是否有一些内置函数,或者我是被迫自己写一个.

推荐答案

在C语言中,如果要隐藏位操作,可以编写一个宏:

#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))

用这种方式判断右端的nth位:

CHECK_BIT(temp, n - 1)

在C++中,您可以使用std::bitset.

C++相关问答推荐

想了解 struct 指针和空指针转换

Mise()在虚拟内存中做什么?

当execvp在C函数中失败时杀死子进程

为什么GCC在每次循环迭代时都会生成一个数组的mov&S使用[]访问数组?(-03,x86)

将 struct 变量赋给自身(通过指针取消引用)是否定义了行为?

预先分配虚拟地址空间的区域

为什么此共享库没有预期的依赖项?

C:在编译时构建和使用字符串文字的预处理器宏?

在编写代码时,Clion比vscode有更多的问题指示器

S和查尔有什么不同[1]?

C语言中的外部关键字

C";中的ANN运行时判断失败#2-变量outputLayer;周围的堆栈已损坏.运行后出错

为什么我的二叉树删除删除整个左部分的树?

在吉陀罗中,_2_1_和CONCAT11是什么意思?

如何不断地用C读取文件?

访问未对齐联合的成员是否为未定义行为,即使被访问的成员已充分对齐?

struct 中的qsort,但排序后的 struct 很乱

10 个字节对于这个 C 程序返回后跳行的能力有什么意义

是否可以在多字 C 类型中的任何位置混合存储和类型限定符?

创建 makefile 来编译位于不同目录中的多个源文件