如何屏蔽未知大小的Python整数的低位“x”

2024-05-14 06:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法来屏蔽(设置为“0”)Python中整数的最低四位,当我不知道数字的总长度时。如果事先知道整数的长度,可以将掩码的其余部分设置为0xff,例如,如果整数总是32位长,我可以使用:

number &= 0xfffffff0     

但是如果我试图在那里使用一个64位的数字,那么它会屏蔽掉32-63位。我想到的两件事是使掩码非常长(例如0xffffffffffff0),或者将位数作为函数的参数。这两种方法可能都能很好地工作,但它们看起来很笨拙。有没有更好/更像Python的方法来做这件事?在


Tags: 方法函数number参数数字整数两件事屏蔽
3条回答

如果一个64位掩码的数字可能高达64位,那么使用64位掩码并没有什么错。在

将位数作为函数的参数将是一个糟糕的选择。为什么要求在不需要的时候指定它?这只会给犯错误创造机会。在

number &= ~0xf

~给出操作数的二进制倒数,因此对于任何整数大小,~0xf都等效于0x...fff0。在

语言不可知的答案,因为这实际上更多的是关于掩蔽操作的一般。要屏蔽整数中最低的四位,请从以下内容开始:

mask = 2^4 - 1

(或者,0xf,或者15,或者其他任何东西——以这种方式显示,这样可以更清楚地说明如何针对不同的长度修改它,以便屏蔽掉……)

然后,提取变量的最低4位:

^{pr2}$

然后,清除变量中的这些位:

value = value ^ lowbits

^这里表示异或(xor)。在

此过程可以在任何语言中工作(前提是它具有所需的位操作),而不考虑整数位的大小。在

相关问题 更多 >