crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Выбор порядка следования операций
AD
  опции профиля:
сообщение 2.3.2010, 11:27
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Прошу помочь записать следующую функцию так, чтобы порядок следования операций был однозначно ясен. По сути, расставить правильно скобочки. А лучше переписать в несколько строк, но с однозначным исходом операций.

/// Возвращение посчитанного значения crc16
unsigned short int crc16(unsigned char *C, unsigned long int size, unsigned short int Crc)
{
    unsigned long int acc = Crc;
    while(size--)
        acc = (acc >> 8) ^ crc_table_16[(acc ^* C++) & 0x00FF];
        return (unsigned short int)acc;
}

Функция не моя. Я свойства операции ^ плохо знаю. Буду благодарен за помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 2.3.2010, 12:53
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 2.3.2010, 14:27) *
Я свойства операции ^ плохо знаю
Y = A ^ B
A | B | Y
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0

Т.е. если аргументы не равны, то ИСТИНА, а если равны, то ЛОЖЬ.

Другие названия этой операции:
Сложение по модулю 2
Несоответствие
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 2.3.2010, 13:30
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


О, вот сложение по модулю 2 я знаю! :) Спасибо
(acc ^* C++) & 0x00FF

Я правильно понимаю следующую последовательность действий:
  1. Выполняется сложение по модулю 2 переменной acc и значения первого элемента массива по указателю C
  2. Переход ко 2 элементу массива
  3. Логическое И над результатом и числом 255

??? Такая последовательность? Т.е. я могу, например, делать увеличение указателя C следующей строкой?

Очень необходима помощь. Буду благодарен, если поможете. Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 0:12