Подсчитать контрольную сумму всех битов в байте - C#
Формулировка задачи:
Суть вопроса в теме. Я немного покодил, и что-то не пашет как я хочу.
Работаю в notepad++, компилирую через батник. Возможности студию поставить пока нет.
static bool CheckSum(uint T)
{
uint c = 0; // здесь будет храниться сумма битов
uint mask = 1; // маска для ксора 0000 0001
for (uint i = 0; i < 9 ; i++)
{
if ((T^mask) != T ) // еже ли младший бит 1, то надо бы его подсчитать. Например 0000 0011 ксор 0000 0001 = 0000 0010, то есть по операции ксор младший бит меняется и не равен Т.
c++;
T = T >> 1; // двигаем вправо, что бы проверить следующий бит
} // итак 8 раз
if (c % 2 == 0) // еже ли сумма битов четная
return true;
else
return false;
}Решение задачи: «Подсчитать контрольную сумму всех битов в байте»
textual
Листинг программы
static bool CheckSum(uint t)
{
bool result = true; //начальное значение результата - чёт.
while(t >= 1) { //пока во входном параметре остаётся хоть 1 бит..
result ^= (t & 0x01) != 0; //..инверсия результата если последний бит входа - единица
t = t >> 1; //..сдвиг входа на 1 вправо
}
return result; //возврат результата
}