W jaki sposób można przeprowadzić operację XOR (na dwóch 32-bitowych liczbach zmiennych) przy użyciu tylko podstawowych działań arytmetycznych? Czy musisz zrobić to bitowo po podzieleniu przez każdą potęgę 2 po kolei, czy jest skrót? Nie dbam o szybkość wykonania tak bardzo, jak o najprostszy, najkrótszy kod.Jak zaimplementować XOR za pomocą + - * /?
Edit: To nie jest praca, ale zagadka stwarzane na hacker.org. Chodzi o implementację XOR na wirtualnej maszynie opartej na stosie z bardzo ograniczonymi operacjami (podobnie jak w przypadku języka brainfuck i tak - bez zmiany lub mod). Używanie tej maszyny wirtualnej jest trudną częścią, choć oczywiście łatwiejszą do wykonania przez algorytm, który jest krótki i prosty.
Podczas gdy rozwiązanie FryGuy jest sprytne, będę musiał przejść z moim oryginalnym ideałem (podobnym do rozwiązania litb), ponieważ porównywanie jest również trudne w tym środowisku.
czy myślisz też o zmianie operatora i modułach? – kenny
x << a === x * (1 << a) x >> a === x/(1 << a) – FryGuy
Brzmi jak zadanie domowe. Zawsze uważałem za najlepszą praktykę cytowanie wszelkich odnośników zewnętrznych, ale byłoby całkiem bezczelnie cytować własne pytanie na temat stackoverflow. Co za dylemat etyczny. –