我在接受采访时被问到:如何将0转换为1,将1转换为0.我回答:
if
和switch
还有其他办法吗?
答案 0 :(得分:34)
简单算术:
x = 1 - x;
实际上,有无数个多项式将映射1到0,反之亦然。例如:
x = x * x * x * x * x - x * x * x * x + x * x - 2 * x + 1;
答案 1 :(得分:28)
一些显而易见的可能性:
!n
1-n
n^1
n==0
n!=1
n<1
答案 2 :(得分:18)
查找表:
int[] swap = { 1, 0 };
后来:
x = swap[x];
答案 3 :(得分:5)
拿回形针。理顺它。这是一个1.弯曲以达到目的。它是一个0.为了使它成为1,将它拉直。
答案 4 :(得分:3)
他们可能希望你使用按位NOT
答案 5 :(得分:3)
一些Trig: COS(PI * N)^ 2
在python中
import math
math.cos(math.pi * n) ** 2
我无法相信人们忘记模数:
(3 + n) % 2
答案 6 :(得分:1)
这个不是最好的,但它有效:
pow(0, n);
答案 7 :(得分:0)
我猜你可以做ABS(VAR - 1),但我认为你的方法更优雅
答案 8 :(得分:0)
我在JavaScript中使用了-~-n
。
它将1转换为-1,表示为11111111
,然后将位翻转为00000000
,即0。第二个负号不会影响0.另一方面,如果{{1} }为0,第一个负号无效,波形符号翻转位,第二个负号将-1转换为1.
答案 9 :(得分:-1)
这适用于任何两个数字......
(编辑:看看其他答案我可能误解了这个问题......但我仍然喜欢我的答案: - )
public class X
{
public static void main(final String[] argv)
{
int x = Integer.parseInt(argv[0]);
int y = Integer.parseInt(argv[1]);
x += y;
y = x - y;
x = x - y;
System.out.println(x);
System.out.println(y);
}
}