Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Контрольная сумма по модулю 2
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
data_stack
Как посчитать сабж для двух байт понятно, вопрос как посчитать его для одного байта. На выходе нужно получить бит
blackfin
Цитата(data_stack @ Mar 18 2016, 18:54) *
Как посчитать сабж для двух байт понятно, вопрос как посчитать его для одного байта. На выходе нужно получить бит

Бит_на_выходе = сумма_бит_в_байте % 2;
jcxz
Цитата(blackfin @ Mar 18 2016, 21:56) *
Бит_на_выходе = сумма_бит_в_байте % 2;

Я конечно понимаю, что компилятор заменит операцию '% 2' на '& 1', но мне казалось что у людей, работающих с сигнальниками (особенно), рука не поднимется написать лишнюю операцию деления, ну или они дважды подумают laughing.gif
menzoda
Сумма по модулю 2 - это XOR. Если нужна однобитовая сумма, то сначала XORтье все байты данных друг с другом, затем биты получившегося результата.
k155la3
сумма по модулю 2
0+0=0
0+1=1
1+0=1
1+1=0

если все биты в байте прогнать через одноразрядный мод2 сумматор, то для четного
кол-ва единиц будет 0, для нечетного 1. четность или нечетность.

Если надо считать очень быстро - через таблицу.
Зачем считать то, что заранее известно ?


Сергей Борщ
Код
CSum = Data ^ (Data >> 4);
CSum = CSum ^ (Csum >> 2);
CSum = CSum ^ (Csum >> 1);
CSum &= 1;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.