Цель 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 (тратит незначительное количество времени), но делает что-то разумное, когда вызывается с параметром, который не равен нулю.

В вашем случае единственная цель - продемонстрировать, насколько слепое копирование плохо, я полагаю:)

Другие вопросы по тегам