¿Cómo convertir enteros firmados a enteros sin firmar en Python?

Python contiene tipos de datos numéricos incorporados como int (enteros), flotantes y complejos. En comparación con la programación en C, Python no tiene enteros con y sin signo como tipos de datos. No es necesario especificar los tipos de datos para las variables en python, ya que el propio intérprete predice el tipo de datos de la variable en función del valor asignado a esa variable. El tipo de datos int en python es simplemente el mismo que el entero con signo. Un entero con signo es un entero de 32 bits en el rango de -(2^31) = -2147483648 a (2^31) – 1=2147483647 que contiene números positivos o negativos. Se representa en notación de complemento a dos. Un entero sin signo es un entero no negativo de 32 bits (0 o números positivos) en el rango de 0 a 2^32-1. Entonces, en este artículo, háganos saber cómo convertir un entero con signo en un entero sin signo en python.

Ejemplo 1: agregue 2^32 (o 1 << 32) a un entero con signo para convertirlo en un entero sin signo

Python3

signed_integer = -100
  
# Adding 2^32 to convert signed to unsigned integer
unsigned_integer = signed_integer+2**32
print(unsigned_integer)
print(type(unsigned_integer))

Producción:

4294967196
<class 'int'>

Ejemplo 2: uso del operador de desplazamiento a la izquierda bit a bit (<<)

Desplazamiento a la izquierda bit a bit: realiza la manipulación de bits al desplazar los bits del operando izquierdo del número a la izquierda y llena 0 en los vacíos que quedan como resultado. 

 Por ejemplo, x << y

La izquierda desplaza el entero ‘x’ con el entero ‘y’ por y lugares. Es lo mismo que multiplicar x por 2 elevado a la potencia de y(2**y).

Python3

signed_integer = -1
  
# Adding 1<<32 to convert signed to 
# unsigned integer
unsigned_integer = signed_integer+(1 << 32)
print(unsigned_integer)

Producción:

4294967295

Ejemplo 3:

Python3

signed_integer = -10
  
# Adding 1<<32 to convert signed to
# unsigned integer
unsigned_integer = signed_integer+(1 << 32)
print(unsigned_integer)

Producción:

4294967286

Publicación traducida automáticamente

Artículo escrito por greeshmanalla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *