es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo especifico el tamaño de una clase en C++?

Mi tarea es crear una clase que implementa números de punto flotante.

El tamaño de la clase debe ser exactamente de 3 bytes:

1 bit para el signo

6 bits para el exponente

17 bits para la mantisa

Intenté implementar la clase usando campos de bits, pero el tamaño es de 4 bytes:

class NumeroPuntoFlotante
{
private:
    unsigned int signo : 1;
    unsigned int exponente : 6;
    unsigned int mantisa : 17;
};
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asegurar que la clase tenga un tamaño exacto de 3 bytes, los bit-fields por si solos pueden no ser suficientes. Una solución posible podría ser usar unión en conjunto con los bit-fields, como sigue:

    class FloatingPointNumber
    {
    private:
        union {
            struct {
                unsigned int mantissa : 17;
                unsigned int exponent : 6;
                unsigned int sign : 1;
            } fields;
            unsigned char bytes[3];
        } data;
    public:
        // constructors, getters, setters, operations, etc.
    };
    

    En esta implementación, la unión permite que la misma memoria sea interpretada de diferentes maneras, ya sea como una estructura de bit-fields o como un arreglo de bytes. La estructura especifica el orden de los bit-fields y el arreglo de bytes asegura que el tamaño de la unión sea exactamente de 3 bytes. El uso de la unión puede requerir cuidado adicional al acceder a los datos, pero provee una manera de lograr la restricción de tamaño deseada.

Comments are closed.