将位数组移位到 Int 变量中

Bit-Shift array of Bits into Int Variable

所以我不确定这是否是实现我最终目标的最简单方法,所以如果有人有更好的建议,请随时向我提出。我已经尝试在此处和使用 Google 进行搜索,但我似乎无法弄清楚如何执行此操作。

我有一个 int 值数组:int bitVal[8]

在我的程序中,每个值都是 1 位,在一个字节内。我需要创建一个遍历每个值的循环,并将值移位到 int 变量中。

我试过这个作为一个简单的测试:

int t = 0;
int e = 1;
for(int i = 0; i < 3; i++) {
    t <<= e;
    printf("%d\n", t);
}

现在我知道,如果我有一个字节值为 0000 0010 的变量并且我执行 var <<= 1;,结果将是 0000 0100。有没有办法设置它,使移位的位为 1 而不是 0?

你可能想多了。您可以一次移入一位,无论它是 0 还是 1。它所需要的只是一个循环,例如:

result = 0;
for (i=0; i<8; i++)
{
    result = (result<<1) | bitVal[i];
}

Is there a way to set it so the shifted bit is a 1 instead of a 0?

不,不是这样。相反,您所做的是移动目标值以腾出空间,然后与您要添加的值相结合。例如,如果 x 是您的累积变量并且 y 包含一个您确定为 0 或 1 的值,那么您可以这样做:

x = (x << 1) | y;