C 中的按位索引?

2024-02-22

我正在尝试实现我的数据压缩想法,并且由于我想象针对大量测试数据运行它,所以我曾想过用 C 对其进行编码(我主要有 Ruby 等脚本语言的经验)天哪。)

浏览 O'Reilly 的 Cow 书籍,我意识到我不能简单地对简单的 char 或 int 类型变量的位进行索引,就像我想做的按位比较和运算符一样。

我的这个认识正确吗?我使用枚举类型来表示位(并创建一个数组,并编写与 char 相互转换的函数)是否合理?如果是这样,标准库中是否已经定义了这样的类型和函数?还有其他(更好的?)方法吗?有人可以向我指出一些示例代码吗?

谢谢 -


根据凯尔所说,您可以使用宏来为您完成艰苦的工作。

有可能的。

要设置第 n 位,请使用 OR:

x |= (1

要清除一点,请使用 AND:

x &= ~(1

要翻转一点,请使用 XOR:

x ^= (1

Or...

#define GetBit(var, bit) ((var & (1 << bit)) != 0) // Returns true / false if bit is set
#define SetBit(var, bit) (var |= (1 << bit))
#define FlipBit(var, bit) (var ^= (1 << bit))

然后你可以在代码中使用它,例如:

int myVar = 0;
SetBit(myVar, 5);
if (GetBit(myVar, 5))
{
  // Do something
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的按位索引? 的相关文章

随机推荐