数组中只出现一次的数字

一个整型数组里除了两个数字之外，其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n), 空间复杂度为O(1)
当数组中只有一个数字出现一次时，可以采用将全部数字异或的方法，那么得到的值就为该数字。
如果是两个数字，就要想办法将他们两个分别放在两个部分。
由于所有数字异或的结果为这两个数字异或的结果，结果的二进制表示中的最后一个1作为分界，这两个数字的该位肯定是一个为0，一个为1.