Первые четыре строки преобразуют v
в 4-битное число (от 0 до 15), которое имеет ту же четность, что и оригинал. 16-битное число 0x6996
содержит четность всех чисел от 0 до 15, а сдвиг вправо используется для выбора правильного бита. Это похоже на использование таблицы поиска:
//This array contains the parity of the numbers 0 to 15
char parities[16] = {0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0};
return parities[v];
Обратите внимание, что записи массива совпадают с битами 0x6996. Использование (0x6996 >> v) & 1
дает тот же результат, но не требует доступа к памяти.