Como proyecto personal, estoy trabajando en la implementación de un tipo de número de Precisión Arbitraria para un proyecto mío propio.¿Cómo determinar de antemano si un cálculo sin firmar puede desbordarse?
Ya conozco todas las bibliotecas populares, probadas y robustas que hacen esto. Quiero trabajar en una solución como un proyecto educativo de superación personal.
estoy investigando la zona y tratando de averiguar si hay alguna manera de más o menos predecir si una operación provocará un desbordamiento antes de que realmente hacen los cálculos. Tampoco estoy tan preocupado por los falsos positivos.
Quiero poder utilizar el espacio más pequeño que sea apropiado para el cálculo. Si el cálculo se mantiene dentro de sus límites nativos, lo mantengo allí.
Por ejemplo: Multiplying two 64 bit Integers if each are large enough will cause an overflow.
quiero para detectar esto y hasta convertir los números a mi tipo de número sólo si el resultado puede superar los 64 bits de resolución. Trabajaré con con números firmados en este experimento.
¿Cuál es la forma más segura y eficiente de detectar un desbordamiento/desbordamiento?
Nunca intenté un proyecto similar, por lo que solo recibí las siguientes preguntas: ¿de qué sirve conocer el desbordamiento de antemano? ¿Optimización para que los nichos más pequeños sean rápidos o algo menos obvio? ¿Necesitas una solución exacta o aceptar una que pueda dar falsas alarmas de desbordamiento? – vmatyi
Su pregunta y su comentario en respuesta a una de las respuestas dicen que está utilizando operandos firmados, pero el título dice unsigned. ¿Cuál es?La aritmética sin signo es probablemente más fácil de manejar, y probablemente sea más adecuada para trabajar con números de precisión arbitrarios. –
Haré cálculos arbitrarios firmados utilizando tipos de primitiva sin signo como componentes base, como en una matriz de largos de 64 bits sin signo que representan la base –