GATE | GATE CS 2018 | Question 47

Consider the following C code. Assume that unsigned long int type length is 64 bits.

filter_none

edit
close

play_arrow

link
brightness_4
code

unsigned long int fun(unsigned long int n) {
        unsigned long int i, j = 0, sum = 0;
        for( i = n; i > 1; i = i/2) j++;
        for( ; j > 1; j = j/2) sum++;
        return sum;
}

chevron_right


The value returned when we call fun with the input 240 is

(A) 4
(B) 5
(C) 6
(D) 40


Answer: (B)

Explanation:

filter_none

edit
close

play_arrow

link
brightness_4
code

// n takes 2^40
unsigned long int fun(unsigned long int n) {
  
        // initialized sum = 0 
        unsigned long int i, j = 0, sum = 0;
             
        //First it takes i = n = 2^40, 
        //then it divides i by 2 and incremented once j
        //each time, that's will make makes j = 40,
        for( i=n; i>1; i=i/2) j++; 
  
        //Now the value of j = 40,
        //it divides j by 2 and incremented once sum
        //each time, that's will make makes sum = 5,
        for( ; j>1; j=j/2) sum++;
  
        //returns sum = 5
        return sum;
}

chevron_right


So, answer is 5.

Quiz of this Question




My Personal Notes arrow_drop_up

Improved By : Pankaj_KS

Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.