c - 逐位串联

标签 c bit-manipulation bit

我有一个 C 代码,其中有一些 SFR [R/W 1.8] 类型的变量。现在连我自己都不知道这是什么类型了。但我知道这个存储有点。 所以假设有变量: A = 1 B = 0 C = 1 D = 0

现在我想将它们连接起来,将它们变成一个整数。

DC B A = 0 1 0 1 = 5

我想要这样的东西。在 C 语言中如何实现这一点?

谢谢

最佳答案

您可以使用位移位。所以要么像这样:

int answer = 0;
answer = D;
answer = (answer << 1) | C;
answer = (answer << 1) | B;
answer = (answer << 1) | A;

或者:

int answer = (D << 3) | (C << 2) | (B << 1) | A;

关于c - 逐位串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033620/

相关文章:

c - fwrite后在txt文件上显示汉字

python - SWIG:需要可变字符串类型映射帮助

C - 从一个字节中获取一点

c - 以位为单位增加大小的有效条件

performance - 使用移位和加/减除以常数

java - 如何管理和操作极大的二进制值

c - 如果在 "if" block 中赋值,c 中的 "if" block 如何工作?例如 if(i=0){//some code } 将流入 if block 内部

c++ - 理解写得不好的代码,第二年 CS 过去的论文

c - 设置 size_t 的最后 3 位

python - Numpy:检查数组中的某个位是否设置为 1 或 0?