Là một dự án cá nhân, tôi đang làm việc để triển khai loại số chính xác tùy ý cho dự án thú cưng của tôi.Làm thế nào để xác định trước khi bàn tay nếu một tính toán unsigned có thể có thể tràn?
Tôi đã biết về tất cả các thư viện phổ biến, được thử nghiệm và mạnh mẽ ở đó thực hiện việc này. Tôi muốn làm việc trên một giải pháp như một dự án giáo dục tự cải thiện.
Tôi đang nghiên cứu khu vực và cố gắng tìm hiểu xem có cách nào để khoảng dự đoán liệu một thao tác có gây ra tràn trước khi tôi thực sự thực hiện các phép tính hay không. Tôi cũng không quan tâm đến những mặt tích cực sai.
Tôi muốn có thể sử dụng không gian nhỏ nhất phù hợp để tính toán. Nếu tính toán sẽ nằm trong giới hạn bản địa của nó, tôi giữ nó ở đó.
Ví dụ: Multiplying two 64 bit Integers if each are large enough will cause an overflow.
Tôi muốn phát hiện điều này và chỉ chuyển đổi số thành loại số của mình nếu kết quả có thể vượt quá 64 bit độ phân giải. Tôi sẽ làm việc với đã ký số trong thử nghiệm này.
Cách hiệu quả nhất, hiệu quả nhất để phát hiện tràn/tràn là gì?
Didnt chưa bao giờ thử dự án tương tự, vì vậy chỉ nhận được câu hỏi: điểm nào trong việc biết trước về tràn? Tối ưu hóa cho nmbers nhỏ hơn để được nhanh chóng, hoặc một cái gì đó ít rõ ràng hơn? U cần một giải pháp chính xác, hoặc chấp nhận một trong đó có thể cung cấp cho báo động tràn sai? – vmatyi
Câu hỏi của bạn và nhận xét của bạn để trả lời một trong các câu trả lời cho biết bạn đang sử dụng toán hạng đã ký, nhưng tiêu đề cho biết chưa được ký. Đó là nó?Unithigned số học có lẽ là dễ dàng hơn để đối phó với, và có lẽ là phù hợp hơn để làm việc với số lượng chính xác tùy ý. –
Tôi sẽ thực hiện các phép tính tùy ý đã ký bằng cách sử dụng các kiểu nguyên thủy chưa ký như các thành phần cơ sở, như trong một dãy các bit dài 64 bit không dấu đại diện cho cơ số –