Преобразование 0 в 1 и наоборот
меня спросили в интервью: как преобразовать 0 в 1 и 1 в 0. Я ответил:--3-->
- простой
if
иswitch
- битовые операции.
есть ли другой подход?
10 ответов
простая арифметика:
x = 1 - x;
На самом деле существует бесконечное число полиномов, которые будут отображать от 1 до 0 и наоборот. Например:
x = x * x * x * x * x - x * x * x * x + x * x - 2 * x + 1;
возьмите скрепку. Уладьте это. Это 1. Согните его так, чтобы он соответствовал своим концам. Это 0. Чтобы сделать его 1, выпрямить его.
Некоторые Тригонометрические: COS (PI * N)^2
в python
import math
math.cos(math.pi * n) ** 2
Я не могу поверить, что люди забыли модуля:
(3 + n) % 2
я использовал -~-n
в JavaScript.
Он преобразует 1 в -1, который представлен как 11111111
, затем переворачивает биты 00000000
что равно 0. Второй отрицательный знак не влияет на 0. С другой стороны, если n
0, то первый отрицательный знак не имеет никакого эффекта, Тильда переворачивает биты, а второй отрицательный знак преобразует -1 до 1.
Это должно работать для любых двух чисел...
(EDIT: глядя на другие ответы, я, возможно, неправильно понял вопрос... но мне все равно нравится мой ответ :-)
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);
}
}