>>> from struct import pack, unpack
>>> def xor_float(f1, f2):
f1 = int(''.join(hex(ord(e))[2:] for e in struct.pack('d',f1)),16)
f2 = int(''.join(hex(ord(e))[2:] for e in struct.pack('d',f2)),16)
xor = f1 ^ f2
xor = "{:016x}".format(xor)
xor = ''.join(chr(int(xor[i:i+2],16)) for i in range(0,len(xor),2))
return struct.unpack('d',xor)[0]
>>> xor_float(10.25,10.25)
0.0
>>> xor_float(10.25,0.00)
10.25
64-bit float
xor
。这将对构成浮点的每个位执行xor
操作,并将其作为double
和/或64-bit float
返回对于xoring浮点数没有内置的支持。相反,您必须使用
struct
模块实现一个注意本例假设浮点数是64位浮点,Python本机支持
在着手解决这个问题之前,我应该先看看你的伪代码。伪代码中的插入符号
^
是幂而不是异或,在python中,通过**
或math.pow
将一个数字提升为幂(包括float)只能对整数应用位运算符。所以先把浮点数转换成整数。在
相关问题 更多 >
编程相关推荐