所以我不确定这是否是实现我最终目标的最简单方法,所以如果有人有更好的建议,请随意把它扔给我。我试过在这里和谷歌搜索,但我似乎无法弄清楚如何做到这一点。
我有一个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 :(得分:2)
你可能正在思考它。您可以一次移位一位,无论它是0还是1.它只需要一个循环,如下所示:
result = 0;
for (i=0; i<8; i++)
{
result = (result<<1) | bitVal[i];
}
答案 1 :(得分:1)
有没有办法设置它使移位位为1而不是0?
不,不是这样的。相反,您所做的是移动目标值以腾出空间,然后与要添加的值组合。例如,如果x
是您的累积变量且y
包含您确定的值为0或1,那么您可以这样做:
x = (x << 1) | y;