Почему этот 8-битный двоичный файл (100000010) остался неизменным при использовании операции XOR при маскировании?

#math #bit-manipulation #bit

#математика #манипулирование битами #бит

Вопрос:

Прошу прощения, если это не в том разделе. Что касается моего вопроса, я понимаю операции маскирования AND и OR . Я совершенно сбит с толку, почему 10000010 имеет то же значение маски, что и исходное значение? Нас попросили переключить биты 1 и 7. Если я правильно понимаю XOR, я бы переключил 1 на 0 и 0 на 1. Почему маска 10000010 не равна 00000000? Я ценю любое полезное объяснение по этому вопросу.

У меня есть асинхронный класс, поэтому спросить моего профессора во время занятий невозможно. Я уже отправил электронное письмо своему профессору, но он не отвечал последние несколько часов.

Комментарии:

1. Что вы подразумеваете под «маской 10000010»?

2. @harold Это было примерное значение для нас, чтобы определить его маску с помощью оператора XOR. Нам пришлось переключить 1 и 7, поэтому эти две «1» в 10000010. К сожалению, нам был приведен только один пример, поэтому этот пример действительно сбил меня с толку.

3. Хорошо, в любом случае, вы можете показать код

4. @harold Я не работаю ни над каким кодом, и у меня его нет для начала.

5. Тогда что вы делаете? Если вы переворачиваете биты вручную, вы можете сделать результат таким, каким хотите, чтобы он был

Ответ №1:

XOR — это функция, которая принимает 2 входных сигнала и применяет «ИСКЛЮЧАЮЩЕЕ ИЛИ» (XOR), что означает, что оно равно 1 , только если входные данные разные:

 0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
  

Это означает, что бит к биту у вас есть:

 10000010 XOR 00000000 = 10000010
  

Если вы хотите получить 00000000 , вам следует перейти:

 10000010 XOR 10000010 = 00000000
  

Комментарии:

1. Это полезно. Я не знал, что могу пойти двумя путями, чтобы получить ответ и маску. Спасибо, что нашли время ответить на мой вопрос.

2. Нет проблем, не стесняйтесь принять ответ, если это решило вашу проблему.