Что означает «ans + = n << count»? - PullRequest
0 голосов
/ 20 сентября 2019
// Function for multiplication 
int multiply(int n, int m) 
{   
    int ans = 0, count = 0; 
    while (m) 
    { 
        if (m % 2 == 1)               
            ans += n << count; 

        // increment of place value (count) 
        count++; 
        m /= 2; 
    } 
    return ans; 
} 

Что означает это выражение?Как переписать это выражение в более удобной для начинающих форме?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2019

Выражение ans += n << count; означает то же самое, что и следующее:

int n_shifted = n << count;  /* bitshift n to the left by count bits */
ans = ans + n_shifted;       /* add n_shifted to ans */
1 голос
/ 20 сентября 2019

это битовые сдвиги n влево на count, затем добавляет его к ans

n << 1  =   n * 2
n << 2  =   n * 4
n << 3  =   n * 8
n << 4  =   n * 16

и т. Д.

...