在“破解编码面试”这本书中,第16章有一个题叫“数字调换”。
谁能解释下图中突出显示的线条?

我已经尝试过使用双精度数据类型的加减方法来解决这个问题,它工作得很好。除此之外,字符串在xor中将不起作用。
那么,它不仅适用于整数,还适用于更多的数据类型,这意味着什么?哪种数据类型会给加减法带来问题?
发布于 2019-04-26 19:05:22
您还没有对浮点数和双精度数进行足够的测试。
如果您尝试使用浮点数1.和10'000'000的加/减解决方案。您将返回10'000'000和0(因为表示限制)。在这种情况下,Xor应该也能很好地工作。双打也有同样的问题,但你需要在数字之间有更大的差异(我认为是1.和1e16 )。一些语言具有特殊的表示形式,可以处理这些情况。
对于字符串,您需要使它们的长度相等,然后逐个字节地应用xor。
总而言之,逐位xor在您可以应用它的所有情况下都会给出正确的答案。
发布于 2019-04-27 05:12:57
XOR解决方案适用于用位表示的任何东西,也就是二进制计算机中的任何数据。sub-add-sub方法有问题的数据类型包括
https://stackoverflow.com/questions/55865766
复制相似问题