Подсчитать количество соседних пар в двоичном - PullRequest
0 голосов
/ 20 октября 2019

Допустим, мне дано целое число n, которое читается пользователем.

Я бы хотел посчитать количество соседних пар единиц, которые есть.

Так, например, скажем, мне дано число 31.

Двоичное представление 31 равно 11111.

Количество пар будет 11 11 1 => 2 пары

Как бы вы это сделали, используя побитовые операторы?

Спасибо!

1 Ответ

0 голосов
/ 20 октября 2019

Вам нужно проверить целое число с условием ((n&3)==3), чтобы найти соседние пары в битовых позициях 0 и 1. Если пара найдена, мы сдвигаемся вправо на 2, в противном случае - на 1, пока мы не проверим все 32 бита.

   unsigned int n = 31;  /* input */
   unsigned char number_of_pairs = 0;  /* result */
   unsigned char mask_position = 0;
   do
   {
      if(((n >> mask_position) & 3) == 3)
      {
         number_of_pairs += 1;
         mask_position += 2;
      }
      else
      { 
         mask_position += 1;
      }
   } while(mask_position < 32);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...