LINUX.ORG.RU
ФорумTalks

Контрольная сумма


0

0

Определяется как двоичное дополнение младших семи битов двоичное суммы всех символов строки!
Объясните!
Я понял так!
Нужно сложить все элементы строки, допустим получилась сумма 76543210.
Двоичное дополнение нужно делать к 6543210?
!?

★★★★★

Re: Контрольная сумма

Приведи определение полностью.

anonymous_incognito ★★★★★ ()
Ответ на: Re: Контрольная сумма от anonymous_incognito

Re: Контрольная сумма

Строка состоит из 18 символов, где последний символ контрольной суммы!
Контрольная сумма определяется как двоичное дополнение младших семи битов двоичной суммы всех символов строки, предшествующих символу контрольной суммы!

UVV ★★★★★ ()
Ответ на: Re: Контрольная сумма от UVV

Re: Контрольная сумма

По-моему, понятно. Надо "поксорить" семнадцать байт (символов), а затем из числа 128 вычесть число, образованное семью битами результата операции двоичного суммирования (xor). Семь битов можно получить, произведя двоичное суммирование с числом 128.

То есть, твоя контрольная сумма это s[17]=128-(128^s[1]^s[2]^...s[17]);

anonymous_incognito ★★★★★ ()
Ответ на: Re: Контрольная сумма от anonymous_incognito

Re: Контрольная сумма

Не совсем так:
sum[17]=128-(127&s[1]^s[2]^...s[17]);
-------------^^^^--------------------
или просто:
sum[17]=!(127&s[1]^s[2]^...s[17]);

xor со 128, если у тебя в старшем разряде был 0 даст 1.

dn2010 ★★★★★ ()
Ответ на: Re: float vs double на x86 от popov_da

Re: float vs double на x86

> Зю! Это правильно!

А вот и нет! Меня поправили, но у меня ещё одна ошибка есть ;-)

s[17]=!(127&s[0]^s[1]^...s[16]);

Вот так правильно (счёт от 0 до 16, а не с 1 до 17 и присваивание 17 -ому элементу)

anonymous_incognito ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.