我有一个C代码,其中我有几个SFR类型的变量[R / W 1.8]。现在我甚至都不知道这种类型是什么。但我知道这存储了一下。 所以假设有变量: A = 1 B = 0 C = 1 D = 0
现在我想将它们连接起来,将它们变成一个整数。
D C B A = 0 1 0 1 = 5
我想要这样的东西。如何在C中实现这一目标?
谢谢
答案 0 :(得分:4)
您可以使用位移。所以要么像这样:
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;
答案 1 :(得分:0)
我不知道你的意思,但也许你想要这个。
unsigned A = 1, B = 0, C = 1, D = 0;
unsigned result = 0;
result |= D;
result <<= 1;
result |= C;
result <<= 1;
result |= B;
result <<= 1;
result |= A;
答案 2 :(得分:0)
试试这个:
(D << 3) | (C << 2) | (B << 1) | A
答案 3 :(得分:0)
由于您不知道什么类型的数据类型&#34; SFR&#34;,因此位操作可能无法在此数据类型上运行。此外,您可能需要SFR的方法,可以比较为零。 (超载或其他)。
unsigned answer = 0;
SFR zero = 0;
if (D != zero) {
answer |= 1;
}
answer <<= 1;
if (C != zero) {
answer |= 1;
}
answer <<= 1;
if (B != zero) {
answer |= 1;
}
answer <<= 1;
if (A != zero) {
answer |= 1;
}