Поиск различий между двумя 8-разрядными двоичными состояниями

#c #math #binary

#c #математика #двоичный

Вопрос:

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

По сути, я создаю тестовое устройство на работе и планирую сохранять состояния в сдвиговом регистре PISO, когда я считываю из SR, я хочу сравнить его с другим 8-битным числом, которое является предопределенным, то есть, если то, что я считываю из SR, совпадает с предопределенным двоичным числом, у меня есть правильное состояние в этот конкретный момент времени.

Однако, если состояния не совпадают, тогда я хочу знать, в чем «разница». Так сказать:

10011000 -&&t; предварительно определенное 10000100 -&&t; чтение из SR

тогда разница была бы

00011100

не

00001100, что является вычитанием между двумя,

существует ли функция C , которая делает то, что я хочу?

Спасибо

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

1. Я думаю, вам нужен ^ оператор (также известный как побитовое XOR)

2. Выполняет ли этот оператор операцию с битами по отдельности? Извините, у меня нет с собой компьютера

3. Я почти уверен, что это то, что вам нужно, поэтому я опубликовал это в качестве ответа. Да, каждый бит преобразуется в xor (то же, что и difference) по отдельности (отсюда и название побитовый xor)

4. @BrendonCheun& Кажется, вы задали довольно много вопросов, но редко принимаете какие-либо из полученных ответов. Возможно, вам следует просмотреть свои вопросы и принять приемлемые ответы и попросить разъяснений, если вы не понимаете ответов?

Ответ №1:

operator^ делает именно это.

Например:

 const unsi&ned char state         = 0b10011000;
const unsi&ned char expected      = 0b10000100;
static_assert((state ^ expected) == 0b00011100);