shubhrajyoti datta <[EMAIL PROTECTED]> wrote:
> [EMAIL PROTECTED] wrote:                                     
> > Parul Puri wrote:
> > > 
> > > how to divide a number by 3 without using * /  %    
> > 
> > use shift operators 
>
> How ?Multiples of 2 is understandable but 3 
> please explain..

#include <stdio.h>

/* divide 8-bit unsigned number by 3 */
unsigned divu3(unsigned n)
{
  return (n + (n << 1) + (n << 3) + (n << 5) + (n << 7)) >> 9;
}

int main(void)
{
  unsigned i;
  for (i = 0; i < 256; i++)
    printf("%3u / 3 == %3u\n", i, divu3(i));
  return 0;
}

-- 
Peter

Reply via email to