Problemas para pasar de un array de enteros a un unsigned int

Problemas para pasar de un array de enteros a un unsigned int

de Joan Francisco Rodrigues De Sa Martinez -
Número de respuestas: 3

Buenas!!

Las funciones del obligatorio deben de devolver un unsignes int pero como trabajamos con arreglo de enteros como, es decir con cadenas de 0s y 1s, surge un problema al utilizar el exponente de 2 ^ 31, debería tener el valor de 2147483648 pero por alguna razón lo asigna con signo de menos, no permite guardarlo como positivo. Busque en internet alguna manera de cambiar el signo pero no me lo permite.

Precisaría este valor en positivo para poder devolver correctamente el unsigned int si tiene el bit en posición 31 en 1.


Quedo atento.

Gracias!!

En respuesta a Joan Francisco Rodrigues De Sa Martinez

Re: Problemas para pasar de un array de enteros a un unsigned int

de Joan Francisco Rodrigues De Sa Martinez -
*** A modo de ejemplo. si preciso devolver un unsigned int que sea el 10000000000000000000000000000000 (solo el bit de posición 32 prendido) no me lo permite ya que este valor corresponde a 2 ^ 31 y es 2147483648 pero se me va de rango y no me permite devolverlo con signo positivo, solo como entero negativo -2147483648 ***
En respuesta a Joan Francisco Rodrigues De Sa Martinez

Re: Problemas para pasar de un array de enteros a un unsigned int

de Guillermo Cossio -
Hola Joan Francisco,

No me queda del todo claro a qué te referís cuando mencionas que trabajamos con arreglo de enteros.

Si declarás una variable como unsigned int y le asignas el valor 10000000000000000000000000000000b, eso representa 2^31 y el bit más significativo en 1 no quiere decir que el número sea negativo.

Dicho eso, si le pasas ese unsigned int a una función que espera un int con signo, puede que sea malinterpretado. En tu caso lo que puede estar pasando es que estés imprimiendo el resultado con printf("%d", buffer), cuando lo que deberías utilizar es printf("%u", buffer). De lo contrario, el printf interpreta lo que le pasas como un entero con signo en complemento a 2.

Saludos,
Guillermo