GVA SUPPORT

Відповідь на запитання № 1300396397
Text:
	ФІО = Горбаченко В.А.

 Запитання:   /* Ефименко. Лаба 3. Варіант 4
Написати функцію,  яка для заханого цілого числа x, обчислює кількість четвірок одиничних бітів.
*/

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
// підключаємо все необхідне для роботи програми
void print_bits (unsigned n)
{ // функція друкує біти, функція з лекії
   int bit; // змінна, в якій буде знаходитись поточне значення кількості бітів
      for (bit = sizeof(n)*4-1; bit >= 0; bit--)
      // початкове значення bit = довжина змінної unsigned
      {
         if ((n >> bit) & 01)
         { // тут іде логічне множення... складно пояснити, але спробую...
           // (n >> bit) - здвигає на "bit" розрядів
           // & 01 - логічне множення - тобто, грубо кажучи кусає правіший біт
           // тут іде побітове множення(чи просто кажучи побітове "і"), для прикладу:           
           // 10101110001101   
           // &                побітове "і"
           // 00000000000001   тобто тут насправді (01)
           // =
           // 00000000000001   - цей результат позитивний, тобто більше нуля, 
           //                    а значить, грубо кажучи == TRUE
           putchar (\'1\');
         }
         else
         {// іначе 0 - наприклад:
          //                        011010
          //                        &
          //                        000001
          //                        =
          //                        000000 - == FALSE або нулю - негативний
          
           putchar (\'0\');
         }
         
            if (bit % 4 == 0) putchar (\' \'); // якщо біт, на якому стоїть лічильник кратний чотирьом, то ставимо пробіл
      }
   cout<<endl; // перевод на нову строчку
}
void countpar_bits (unsigned n)
{ // обчислює кількість четвірок одиничних бітів
// приймає ціле беззнакове двухбайтове значення
     int count=0;   // наш лічильник пар       
     do // цикл з післяумовою
     {
         if (                        // якщо
              n & 01                 // перший з права біт == 1   
              &&                     // і
              (n>>1) & 01            // другий з права біт == 1   
              &&                     // і
              (n>>2) & 01            // трейтій з права біт == 1   
              &&                     // і
              (n>>3) & 01            // четвертий з права біт == 1   
                            
            )      
            { // тоді ми знайшли пару
                   count++; // кількість пар ++
                   n>>=4;   // здвигаємо на чотири біти
            }
            else // інакше
            {
                n>>=1; // здвигаємо на один біт
            }    
     }
     while (n != \'\\0\');  // виходимо, коли ми пройдемо всі біти
     cout<<"\\nNumber of \'1111\' = " << count << endl;  // виводимо на екран результат
}
main ()
{
   unsigned num; // створюємо цілу беззнакову двохбайтову змінну
   cout << "Input int" << endl;   // підсказка користувачу
   cin >> num;   // зчитуємо число
   print_bits (num); // друкуємо біти
   
   countpar_bits (num); // виводимо кількість пар бітів      

   system ("PAUSE");
   return 0;
}


====================================	
Ваша відповідь