假设我有这个号码i = -6884376
。
我如何将其称为无符号变量?
就像是(unsigned long)i
in C.
Assuming:
- 你心里有 2 的补码表示;和,
- By
(unsigned long)
you mean无符号 32 位整数,
那么你只需要添加2**32 (or 1 << 32)
为负值。
例如,将此应用于 -1:
>>> -1
-1
>>> _ + 2**32
4294967295L
>>> bin(_)
'0b11111111111111111111111111111111'
假设 #1 意味着您希望 -1 被视为由 1 位组成的固定字符串,而假设 #2 意味着您需要 32 位。
不过,除了你之外没有人可以说出你隐藏的假设是什么。例如,如果您考虑的是 1 的补码表示,那么您需要应用~
改为前缀运算符。 Python 整数努力给人一种使用无限宽的 2 的补码表示形式的错觉(类似于常规的 2 的补码,但具有无限数量的“符号位”)。
要复制平台 C 编译器的功能,您可以使用ctypes
module:
>>> import ctypes
>>> ctypes.c_ulong(-1) # stuff Python's -1 into a C unsigned long
c_ulong(4294967295L)
>>> _.value
4294967295L
C's unsigned long
恰好是运行此示例的机器上的 4 个字节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)