我一直在研究如何在一个数组中找到孤独的整数算法,并且这是实现:
int arr[] = {10, 20, 30, 5, 20, 10, 30};
int LonelyInteger = 0;
for(int i=0; i< 7; i++)
{
LonelyInteger = LonelyInteger ^ arr[i];
}
结果是5
。我的问题是 - 假设整数(由
XOR
操作生成)由于该操作过大:LonelyInteger ^ arr[i]
这可能导致一个非常大的整数,而在这种情况下常规 int
类型无法表示。我的问题是:
- 使用
XOR
运算是否有可能生成无法存储在int
类型中的大整数? - 如果不可能发生这种情况,是否有证明?
x^y
可能比max(x, y)
大,因此在这方面,你可以获得某个大数的定义。 - haroldLonelyInteger != 0 → 存在一个孤立的值
(注意它不是一个↔
,就像例子{1,2,3}
中所看到的那样)。 - Bergix^y <= x+y < 2*max(x,y)
,这意味着你不能将任何一个操作数中已经设置的比特位设置得更高。例如:128^127 = 255,这仍然是一个8位的数值。 - smci