2009-12-08 2 views
5

У меня есть 128-битное число, хранящееся как 2 64-разрядных номера («Привет» и «Ло»). Мне нужно только разделить его на 32-битное число. Как я могу это сделать, используя собственные 64-разрядные операции с процессором?Беззнаковое 128-разрядное деление на 64-разрядной машине

(Пожалуйста, обратите внимание, что мне не нужна библиотека точности. Просто нужно знать, как сделать это простое разделение с помощью собственных операций. Спасибо).

ответ

3

Если вы сохраняете значение (128 бит), используя максимально возможное собственное представление, которое может обрабатывать ваша архитектура (64-разрядные), у вас возникнут проблемы с обработкой промежуточных результатов деления (как вы уже нашли :)).

Но вы всегда можете использовать представление SMALLER. Как насчет ЧЕТЫРЕХ чисел 32-бит? Таким образом, вы можете использовать собственные 64-битные операции без проблем с переполнением.

Простую реализацию (в Delphi) можно найти here.

+0

Perfect. Благодаря! – rookie

 Смежные вопросы

  • Нет связанных вопросов^_^