Цель XOR-инг с 0?
Итак, у меня есть статическая хеш-таблица, и перед добавлением кода в таблицу индекс XOR-редактируется с 0. Почему это так, если индекс таблицы уже объявлен как целое число?
h = 0;
h ^= (i << LZW_HASH_SHIFT);
if (h >= LZW_HASH_SIZE)
{
h -= LZW_HASH_SIZE;
}
s->tab[h].code = i;
s->tab[h].suffix = i;
s->tab[h].hash_prefix = LZW_PREFIX_EMPTY;
Этот исходный код является частью библиотеки FFmpeg LZW encoder.
1 ответ
В исходном коде hash
Функция вызывается из других мест в коде, и нет смысла дублировать функцию, чтобы избежать одной строки в особом случае, когда эта строка ничего не делает. Таким образом, он ничего не делает, когда вызывается из clearTable
(тратит незначительное количество времени), но делает что-то разумное, когда вызывается с параметром, который не равен нулю.
В вашем случае единственная цель - продемонстрировать, насколько слепое копирование плохо, я полагаю:)