The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
+15 votes

Consider the function func shown below: 

int func(int num) { 
   int count = 0; 
   while (num) { 
     num>>= 1; 
   return (count); 

The value returned by func($435$) is ________

asked in Algorithms by Veteran (99.8k points)
edited by | 2.2k views

will left shift will in multiplication?


4 Answers

+23 votes
Best answer

Answer is $9$.

$435-(110110011) $

num $>>=$ $1$; implies a num is shifted one bit right in every while loop execution.While loop is executed $9$ times successfully and $10$th time num is zero.

So count is incremented $9$ times.


Shifting a number "1"bit position to the right will have the effect of dividing by $2$:

8 >> 1 = $4    // In binary: (00001000) >> 1 = (00000100)
answered by Active (4.7k points)
edited by
doubt: why we are not considering the storing technique like little endian or big endian.. in C int take 16 bits if we consider big endian [uper bytes take lower address and lower bytes take upper address] then answer is fine but what if little endian...?
+12 votes
int func(int num) // take decimal number
   int count = 0; 
   while (num) // until all bits are zero
     count++; // count bit 
     num>>= 1; // shift bits, removing lower bit
   return (count); // returns total number of bits

(435)10 = (110110011)2 
So, the given program counts total number of bits in binary representation . Hence, answer is 9

answered by Loyal (6k points)
reshown by
+2 votes

The function mainly returns position of Most significant bit in binary representation of n. The MSD in binary representation of 435 is 9th bit.

Another explanation : >> in right shift. In other words, it means divide by 2. If keep on dividing by 2, we get: 435, 217, 108, 54, 27, 13, 6, 3, 1. Therefore, the count is 9.

answered by Loyal (8.3k points)
edited by
+1 vote
answered by Junior (995 points)

Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true

38,079 questions
45,572 answers
49,040 users