2009-12-08 4 views
5

Tôi có số 128 bit được lưu trữ dưới dạng 2 số 64 bit ("Hi" và "Lo"). Tôi chỉ cần chia nó cho một số 32 bit. Làm thế nào tôi có thể làm điều đó, bằng cách sử dụng các hoạt động 64-bit bản địa từ CPU?Phân chia 128 bit chưa được ký trên máy 64 bit

(Xin lưu ý rằng tôi KHÔNG cần thư viện chính xác tùy ý. Chỉ cần biết cách phân chia đơn giản này bằng cách sử dụng các hoạt động gốc. Cảm ơn bạn).

Trả lời

3

Nếu bạn đang lưu trữ giá trị (128 bit) bằng cách sử dụng đại diện gốc có thể lớn nhất, kiến ​​trúc của bạn có thể xử lý (64 bit), bạn sẽ gặp sự cố khi xử lý kết quả trung gian của bộ phận (như bạn đã tìm thấy :)).

Nhưng bạn luôn có thể sử dụng biểu diễn SMALLER. Điều gì về bốn số của 32-bit? Bằng cách này, bạn có thể sử dụng các hoạt động 64 bit gốc mà không có sự cố tràn.

Triển khai đơn giản (trong Delphi) có thể được tìm thấy here.

+0

Hoàn hảo. Cảm ơn! – rookie