2017-10-07 613 views
1

的意思是我有以下值什么是 “&0x7FFFFFFF的” 在 “INT(了time.time()* 1000.0)0x7FFFFFFF的”

start = int(time.time()*1000.0) & 0x7FFFFFFF 

什么是& 0x7FFFFFFF的目的是什么?

+0

它来自随机数发生器吗? – ayhan

+0

屏蔽具有0x7FFFFFFF的整数可确保无法对32位数量进行签名(最高有效位为0)。 – Neitsa

+2

这意味着你只想保留结果值的最后31位,所以它就像模2^31中的计算一样。 – trincot

回答

5

这是一个位掩码。在低级计算中,这是清除寄存器位的有效方法。在这种情况下,掩码的所有位都是32位整数集,除了有符号位。有符号位是确定数字是正数还是负数的位。使用此掩码进行与(&)的有效设置,将有符号位设置为0,这意味着该数字总是正数。

a && bTrueab都是True时。
a & b1ab都是1时,对于a和b中的每个二进制数字。

Python支持二进制文字,前缀为0b。这里有一些3位数字and在一起。

>>> 0b101 & 0b110 == 0b100 
True 
>>> 0b011 & 0b111 == 0b011 
True 
>>> 0b011 & 0b110 == 0b010 
True 
1

0x7FFFFFFF是一个十六进制数(2,147,483,647,十进制数),表示32位带符号二进制整数的最大正值。

&符号是bitwise operator,更具体地是and运营商。

我们称之为值0x7FFFFFFF'A'和表达式int(time.time()*1000.0)'B'。

当你做'A' & 'B',输出的每一位为1,如果A和B的相应位为1,否则则为0

相关问题