Его логическая операция над входными значениями. Чтобы понять, как преобразовать значения в двоичную форму и где бит-бит в позиции n имеет 1, результат имеет 1. В конце конвертировать назад.
Например, с этими примерными значениями:
0x2222 = 10001000100010
0x000F = 00000000001111
result = 00000000000010 => 0x0002 or just 2
Я полагаю, что ваш код сработает, если вместо этого вы напечатаете Hifact(m,n)
в строке 8. Я проверил это, и код напечатал 5 по желанию. Я также проверил с некоторыми другими значениями, которые все еще дали правильный ответ.