为什么VS2^15-1算出来的结果是12?

int a;
a = 2 ^ 15 - 1;
为什么a的输出结果是12?
(在做位运算,这是其中一小步。)
求解答,谢谢。

^ 是异或运算,相同为0,不同为1,2和15写成二进制就是
2 = 00010
15 = 01111
2 ^ 15 = 01101 = 13
2 ^ 15 - 1 = 13 - 1 = 12