I have the following value
start = int(time.time()*1000.0) & 0x7FFFFFFF
What is the purpose of the & 0x7FFFFFFF
?
It's a bitmask. In low-level computation, it's an efficient way to clear out bits of register. In this case, the mask has all bits of a 32 bit integer set, except the signed bit. The signed bit is the bit that determines if the number is positive or negative. ANDing (&
) with this mask effectively sets the signed bit to 0, which means the number will always be positive.
a && b
is True
when both a
and b
are True
.
a & b
is 1
when both a
and b
are 1
, for each binary digit in a and b.
Python has support for binary literals, with the 0b
prefix. Here are some 3-bit numbers being and
ed together.
>>> 0b101 & 0b110 == 0b100
True
>>> 0b011 & 0b111 == 0b011
True
>>> 0b011 & 0b110 == 0b010
True
0x7FFFFFFF
is a number in hexadecimal (2,147,483,647 in decimal) that represents the maximum positive value for a 32-bit signed binary integer.
The &
symbol is a bitwise operator, more specifically the and
operator.
Let's call the value 0x7FFFFFFF
'A' and the expression int(time.time()*1000.0)
'B'.
When you do 'A' & 'B'
, each bit of the output is 1 if the corresponding bit of A AND of B is 1, otherwise it's 0.
User contributions licensed under CC BY-SA 3.0