你可以使用算术运算符翻转0到1之间

时间:2010-11-03 03:43:40

标签: algorithm

有没有办法不使用逻辑和按位运算符,只是算术运算符,在值为0和1的整数之间进行翻转?

即。 “变量?=变量”将使变量a 1(如果为0)或0(如果是1)

11 个答案:

答案 0 :(得分:172)

x = 1 - x

将在0和1之间切换。

答案 1 :(得分:26)

编辑:我误解了这个问题,认为OP可以使用any运算符

更多......(忽略这些)

x ^= 1       // bitwise operator
x = !x       // logical operator
x = (x <= 0) // kinda the same as x != 1

不使用运营商?

int arr[] = {1,0}
x = arr[x]

答案 2 :(得分:18)

假设它被初始化为0或1:

x = 1 - x

答案 3 :(得分:16)

另一种方式:

x = (x + 1) % 2

答案 4 :(得分:5)

st0le第二种方法的喜剧变异

x = "\1"[x]

答案 5 :(得分:4)

int flip(int i){
    return 1 - i;
};

答案 6 :(得分:4)

只是为了多种多样:

x = 1 / (x + 1);

x = (x == 0);

x = (x != 1);

不确定您是否将==!=视为算术运算符。可能不是,显然虽然它们在C中工作,但更强类型的语言不会将结果转换为整数。

答案 7 :(得分:4)

翻转一下的另一种方法。

x = ABS(x - 1) // the absolute of (x - 1)

答案 8 :(得分:3)

你可以试试这个

+(!0) // output:1

+(!1) // output:0

答案 9 :(得分:0)

您可以使用简单的方法: abs(x-1) 要不就: int(not x)

答案 10 :(得分:-1)

我很惊讶的另一个可能的变体并不在这里 - (x-1)*-1