В этом фрагменте кода есть только одна концепция, которая отличается от Java:
Чистый С не имеет boolean
. Таким образом, каждое сравнение истинно, если выражение возвращает что-то еще, кроме нуля. Я вижу два места в коде, где это имеет значение.
О, and
также неизвестно в Си. Вы уверены, что это чистый C?
Кроме того, этот, безусловно, не C:
(product and multiplier registers) >> 1;
Я предполагаю, что это означает:
product >>= 1; // or >>>=, depends on signed/unsigned
multiplier >>= 1; // or >>>=, depends on signed/unsigned
Если вы знаете Java, не должно быть проблем с пониманием того, что происходит с этими подсказками.