JAVA按位异或运算 -3^3

-3 ^3
我大概思路是这样的
-3 =10000000 00000000 00000000 00000011
3=00000000 00000000 00000000 00000011
最后的样品为100000000 00000000 00000000 00000000,总之数字很庞大
但计算机检查得-2,是我哪里算错了吗

/**-3^3的java异或运算
* --3 原码 10000000 00000000 000000000 000000011
* 反码 11111111 11111111 111111111 111111100
* 补码 11111111 11111111 111111111 111111101
* 3 原码 00000000 00000000 000000000 000000011
* 运算 11111111 11111111 111111111 111111110 次结果为运算的补码 补码-1=反码
* 反码 11111111 11111111 111111111 111111101 得到的反码
* 原码 10000000 00000000 000000000 000000010 反码进行还原 32位储存值为对应-2的编码 因此值-2

3:0000 0011,
-3:1111 1101,计算机中,负数以补码形式保存(补码=原码取反,然后加1)
0000 0011^1111 1101=1111 1101,这是结果的补码,补码-1,取反就是源码=1000 0010(最高位为符号位,保持不变)=-2