在c中移位左位值

时间:2011-05-12 19:22:12

标签: c microcontroller

更新

我是Microchip的PIC 18F4550的c编译器的硬件编程新手。

我的问题是,有人可以给我一个例子'如何用进位移位位'1110 => 14?

这位是一个可以去的地方。这个数字也应该减少到一点。我希望很清楚,对不起提前!

unsigned int red = 1206420333240; LATAbits.LATA2 = red << 1;

2 个答案:

答案 0 :(得分:0)

未经测试的基本版

unsigned result = 0;
index = 0;
while (1) {
    if (result > UINT_MAX / 2) /* there will be carry on the next operation! */;
    result *= 2;
    result += data[index];
    index++;
    /* this loop needs a break somewhere */
}

答案 1 :(得分:0)

我的问题不是那么清楚。

你想知道如何向左移动整个数组,其中每个整数代表一个位(例如:{0,0,1,0} =&gt; {0,1,0,0}? 如果这样做,您可以尝试以下(假设:数组不为空):

int i;
int arraySize = sizeof(data) / sizeof(int); // You can change sizeof(int) with sizeof(data[0])
int carry = data[0];
for (i = 1; i < arraySize; i++)
   data[i - 1] = data[i];