------
## 最终结论
```python
class TrieNode:
    def __init__(self):
        self.children = {}
        
class Trie:
    def __init__(self):
        self.root = TrieNode()
        
    def insert(self, num):
        node = self.root
        for i in range(31, -1, -1):  # 32 bits for numbers < 2^31
            bit = (num >> i) & 1
            if bit not in node.children:
                node.children[bit] = TrieNode()
            node = node.children[bit]
    
    def find_max_xor(self, num):
        node = self.root
        max_xor = 0
        for i in range(31, -1, -1):
            bit = (num >> i) & 1
            # Try to find the opposite bit to maximize XOR
            toggled_bit = 1 - bit
            if toggled_bit in node.children:
                max_xor |= (1 << i)
                node = node.children[toggled_bit]
            else:
                node = node.children[bit]
        return max_xor

def find_maximum_xor(nums):
    trie = Trie()
    max_result = 0
    
    for num in nums:
        trie.insert(num)
    
    for num in nums:
        max_result = max(max_result, trie.find_max_xor(num))
    
    return max_result

# Example usage:
input_nums = [3, 10, 5, 25, 2, 8]
print(find_maximum_xor(input_nums))  # Output: 28
```