Подсчитать последовательный 1-бит без перекрытия - PullRequest
0 голосов
/ 05 марта 2019

Определите количество 1-битных пар без перекрытия с другими парами в C. Но Мой код не включает первое число.Как 11011 имеет 2 пары 1-бит, но мой вывод дает мне 1 пару, потому что он не включает в себя первое число.

int numPairs(int n){
    int count=0;
    bool prevOne=0;
    while(n!=0){
        bool currOne=(n&1)==1;
        if(currOne && !prevOne)
            count++;
        n=n>>1;
        prevOne=!currOne;
    }
    return count/2;
}

1 Ответ

2 голосов
/ 05 марта 2019
int numPairs(int n)
{ 
    int count=0; 
    bool prevOne=0; // 1 if previous bit was 1.
    while(n!=0)
    { 
        bool currOne=(n&1)==1; 
        if(currOne && prevOne) 
            count++; 
        n=n>>1; 
        prevOne=currOne; 
    } 
    return count; // no need divide count by 2 as count exactly specifies number of 1bit pairs.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...