variable uint8_t uint8 uint32_t uint16_t objective ios objective-c uint32

ios - uint8_t - variable uint32_t



¿Cómo configuro un UInt32 a su valor máximo? (6)

  1. ¿Cuál es el valor máximo para un UInt32?

  2. ¿Hay alguna forma en que pueda usar el operador sizeof para obtener el valor máximo (ya que no está firmado)? Entonces no termino con #defines o números mágicos en mi código.


4.294.967.295 es el valor máximo o en hexadecimal 0xFFFFFFFF


El valor máximo para UInt32 es 0xFFFFFFFF (o 4294967295 en decimal).

sizeof(UInt32) no devolvería el valor máximo; devolvería 4, el tamaño en bytes de un entero sin signo de 32 bits.



La forma portátil:

std::numeric_limits<uint32_t>::max()


Solo establece el máximo usando notación hexadecimal estándar y luego compáralo con lo que necesites. 32 bits es 8 bytes hexadecimales, por lo que sería así:

let myMax: UInt32 = 0xFFFFFFFF if myOtherNumber > myMax { // resolve problem }


Una alternativa para cualquier no firmado en C o C ++ es:

anUnsigned = -1;

Esto es útil, ya que funciona para todos ellos, por lo que si cambia de unsigned int unsigned long a unsigned long , no necesita revisar su código. También verás esto usado en un montón de código de manipulación de bits:

anUnsigned |= -(aBoolOrConditionThatWhenTrueCausesAnUnsignedToBeSetToAll1s) anUnsigned |= -(!aValueThatWhenZeroCausesAnUnsignedToBeSetToAll1s) anUnsigned |= -(!!aValueThatWhenNonZeroCausesAnUnsignedToBeSetToAll1s)

La desventaja es que se ve extraño, ¡asignando un número negativo a un sin signo!