若一个数为负数
负数的补码=对应正数的补码(原码)取反+1
那求回对应正数就应该-1再取反
一个数a的二进制长度为bit_length,那么a加上全为1且长度为bit_length的二进制数=a-1
异或全为1且长度为bit_length的二进制数将会取反
若一个数为正数
一个数a的二进制长度为bit_length,那么a加上全为0且长度为bit_length的二进制数=a
异或全为0且长度为bit_length的二进制数将保持不变
def absolute(a):
mask=a>>31
result=(a+mask)^mask
result result