Я написал интерпретатор, который требует от меня выполнения 32-разрядного деления целых чисел без знака. В Java я могу сделать это как:
reg[a] = (int) ((reg[b] & 0xFFFFFFFFL) / (reg[c] & 0xFFFFFFFFL));
Но я бы хотел избежать преобразования в long и обратно в int. Java уже предоставляет беззнаковый оператор смещения вправо >>>
для этого особого случая, поэтому, возможно, есть умный способ сделать беззнаковое деление таким же образом.
Обратите внимание, что сложение и умножение работают нормально, так как два числа комплимента просто работают.
Есть ли лучший способ сделать это в Java?