сдвинуть левое значение бита в с - PullRequest
0 голосов
/ 12 мая 2011

обновление

Я новичок в программировании аппаратного обеспечения с помощью компилятора c для PIC 18F4550 от Microchip.

Мой вопрос: может ли кто-нибудь дать мне пример «как сдвинуть биты, оставленные с помощьюa carry '1110 => 14?

Бит - это флаг, который куда-то должен идти.также число должно быть уменьшено до этого немного.Надеюсь понятно, заранее извините!

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

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Ваш вопрос мне не так понятен.

Вы хотите знать, как сдвинуть влево весь массив, где каждое целое число представляет бит (пример: {0,0,1,0} => {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];
0 голосов
/ 12 мая 2011

непроверенная базовая версия

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 */
}
...