Подсчитать контрольную сумму всех битов в байте - C#

Узнай цену своей работы

Формулировка задачи:

Суть вопроса в теме. Я немного покодил, и что-то не пашет как я хочу.
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;
        }
Работаю в notepad++, компилирую через батник. Возможности студию поставить пока нет.

Решение задачи: «Подсчитать контрольную сумму всех битов в байте»

textual
Листинг программы
static bool CheckSum(uint t)
        {
            bool result = true;             //начальное значение результата - чёт.
            while(t >= 1) {                 //пока во входном параметре остаётся хоть 1 бит..
                result ^= (t & 0x01) != 0;  //..инверсия результата если последний бит входа - единица
                t = t >> 1;                 //..сдвиг входа на 1 вправо
            }
            return result;                  //возврат результата
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.429 из 5
Похожие ответы