Restricción de 32 bits de Python Bitshift

Posible duplicado:
Problema en el cálculo de la sum de comprobación: casting int a sign32 int32

Esta debería ser una respuesta relativamente fácil, simplemente no sé cómo buscarla … Tengo algunas cosas semi relevantes, pero nada que se ajuste a lo que estoy tratando de hacer.

>>> 1171855803 << 7 149997542784L # I want -326312576 

En otras palabras, trate el número como un número entero y no permita que se convierta a un largo. ¿Cómo haría esto?

He intentado la solución en esta pregunta :

 >>> x = 0xFFFFFFFF & (1171855803 <>> if x > 0x7FFFFFFF: print -(~(x - 1) & 0xFFFFFFFF) else: print x -326312576L # yay! 

¡Funciona!

    Puede que no sea la mejor respuesta, pero esto funciona …

     import numpy as np np.int32(1171855803) << 7 

    Tu podrías intentar

     import ctypes a=ctypes.c_int32(1171855803) a.value<<=7 print a 

    que da: c_int (-326312576)

    Parece permitir manipulaciones de bits específicas de la plataforma. No estoy seguro de la eficiencia.