В Java XOR с тремя входами true возвращает true. Почему?

Следующий код

System.out.println("1 0 0: " + (true ^ false ^ false));
System.out.println("1 0 1: " + (true ^ false ^ true));
System.out.println("1 1 0: " + (true ^ true ^ false));
System.out.println("1 1 1: " + (true ^ true ^ true));
System.out.println("0 0 0: " + (false ^ false ^ false));
System.out.println("0 0 1: " + (false ^ false ^ true));
System.out.println("0 1 0: " + (false ^ true ^ false));
System.out.println("0 1 1: " + (false ^ true ^ true));

выводит:

1 0 0: true
1 0 1: false
1 1 0: false
1 1 1: true
0 0 0: false
0 0 1: true
0 1 0: true
0 1 1: false

Почему XOR возвращает истину , когда все три входа равны истине ?

Если это допустимая логика, как я могу реализовать логику, которая возвращает истину только , если один из входных элементов имеет значение истина (независимо от того, сколько входов я предоставляю)?

12
задан parxier 3 June 2011 в 01:42
поделиться