Решение для неизвестного в побитовой алгебре - PullRequest
2 голосов
/ 17 июля 2011

Предположим, у меня есть 3 байта, XY и Z.

X XOR Y приводит к Z.

Я знаю, что такое X и Z, но я не знаю, что такое Y,поэтому я пишу быстрый сценарий, чтобы понять это.

Хотя я не знаю, как бы я начал.Я сделал пару из них вручную, и это был просто вопрос сравнения каждого бита один за другим, но как я могу сделать это в python?Моя процедура решения для Y не кажется достаточно ясной.

Поскольку мне просто нужно использовать что-то подобное, достаточно написать или просто использовать то, что делает это для меня.

1 Ответ

7 голосов
/ 17 июля 2011

Если x ^ y == z, то x ^ z == y. Вы можете проверить это в Python с помощью

>>> X = range(256)  # all byte values
>>> Y = range(256)
>>> all(x ^ z == y for x in X for y in Y for z in [x^y])
...