2016-04-12 19 views
2

gibi bitleri yorumlamak için tamamlayıcı kod kullanmasına izin vermek için ne yapabilirim? Aslında, sadece Python'un c ile aynı şeyi yapmasını istiyorum. c örneğinpython'un, c bit

:

ancak

int num = 1 << 31; // num's bits should be 0x8000 0000.

printf("%d\n", num); // the print is -2147483648, because of complememnt.

, Python:

>>> num = 1 << 31 
>>> print num 
2147483648 
>>> print int.bit_length(num) 
32 
>>> print '{0:b}'.format(num) 
10000000000000000000000000000000 

Python num yorumlamak için gerçek kodu kullanabilirsiniz gibi görünüyor. python'un sadece c gibi bitleri yorumlamak için tamamlayıcı kodu kullanmasına izin vermek için ne yapabilirim. Bunun bu tamsayı ile bir sonraki yapmak istiyorum ne için yeterlidir umut

import ctypes 
    ctypes.c_int(1 << 31) 

:

cevap

3

Eğer aradığınız sonucu elde ctypes modülünü açabilir. Python, tamsayılarla C'den çok daha bağışlayıcıdır: bir operasyonun sonucunu tutmak için gerektiğinde daha büyük bir gösterime (örneğin, int uzun) yükseltme yaparak taşmayı önler. Daha iyi bir soyutlamaya sahip olmak güzel, ama daha düşük seviyeye geldiğinde işleri zorlaştırıyor.

+1

Bir python tamsayı almak için, 'ctypes.c_int (1 << 31) .value' – mgilson