我正在尝试解决字节操作:
0x25 ^ (0xFFFFFFFF << 1) = 0x87654321 * x
我试图找到x的值,使这个陈述成立。
答案 0 :(得分:0)
表达式0x25 ^ (0xFFFFFFFF << 1)
和0x87654321
分别只评估整数8589934555
和2271560481
。
如果你想解决8589934555 == 2271560481 * x
,那么你只需要分开。
# Reminder: in Python3, / will always output a float
x = (0x25 ^ (0xFFFFFFFF << 1)) / 0x87654321 # Output: 3.781512588746256
0x25 ^ (0xFFFFFFFF << 1) == 0x87654321 * x # Evaluates to True
您可能一直在思考这一点,请记住0x25
只是十六进制符号的整数。这意味着,对于Python,它与编写37
完全相同。
此外,^
和<<
等操作也会返回整数,因此一旦获得输出的值,就没有什么可担心的了。初等代数仍然适用。