#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);