You can't.  You can allow an integer type variable i to identify e.g.
a 16-bit short with index i % 16 and bit 1 << i.  This is a very
standard technique.



On Jul 5, 10:15 am, Ashish Goel <[email protected]> wrote:
> i fail to understand how can you give a pointer to a bit which is not
> starting at the word boundary?
>
> Best Regards
> Ashish Goel
> "Think positive and find fuel in failure"
> +919985813081
> +919966006652
>
>
>
> On Mon, Jul 5, 2010 at 7:24 PM, Siddhi <[email protected]> wrote:
> > i think 2 digit combination switch case can be kept:
> > e.g : there can be value between 1 to F (considered smallest 4 bit
> > sequence)
> > now 2, 4, 6 can never be part of coninuous sequence..
> > switch(combo):
>
> > 1 followed by 8:  valid
> > 1 followed by 9: valid,
> > 1 followed by 10: valid
> > like that we make combinations of all 1 to f wid each other which are
> > valid, else invalid:
>
> > like combo of 7 followed by F, 3 followed by F, 5 followed by F, 3
> > followed by 9 make sense
> > So i think instead of scanning every bit, what can be done is take 8
> > bits (anding integer with 0x0f, 0xf0)
> > if switch case gives valid combo as result,  remember pointer to first
> > 1's bit of left digit.. go to next, now if this and the right digit
> > (og previous combo) combo makes sense, then go to next else break
> > sequence start scanning from next remember the first pointer
> > (overwrite the pointer stored previously, if lengths of 1's are
> > greater)..
> > like that we can get longest sequence.
> > e.g, the sequence given by you is-
> >  1111,0111,0011,1110,0000,10111
>
> > Here at beginning we get F, we remember 1st bit , next we get 7  ,
> > invalid combo of F and 7 (smallest length till now 4, pointer 1st bit-
> > remember) ,
> > next 7 and 3.. forget, next 3 followed by 14 .. valid combo.. length -
> > > 5 > previously stored length.. overwrite length.. and remember
> > beginning 1's position in 3..
> > like that continue..
>
> > i think this (if implemented well) can give better result than
> > scanning eaach bit..
>
> > let me know ur view.. and correct me if m wrong
>
> > On Jul 5, 12:15 am, Gene <[email protected]> wrote:
> > > On Jul 4, 6:31 am, jalaj jaiswal <[email protected]> wrote:
>
> > > > There is very long array of ints, and you are given pointer to base
> > addr of
> > > > this array.. each int is 16bit representation... you need to return the
> > > > pointer to tht "bit" inside array where longest sequence of "1"s start
> > > > for example. if your array has following in bit representation:
> > > > 1111,0111,0011,1110,0000,10111
> > > > then your longest sequence has 5 ones but the longest number has only 4
> > > > ones.(so finding highest num wnt wrk)
> > > > --
> > > > With Regards,
> > > > Jalaj Jaiswal
> > > > +919026283397
> > > > B.TECH IT
> > > > IIIT ALLAHABAD
>
> > > You can just define a function that accesses the array by bit index
> > > and then scan in a simple manner to find the longest stretch of 1's.
>
> > > I'll assume unsigned short is 16 bits.  This code is not compiled or
> > > tested.
>
> > > // Exact definition here depends on how you want to index bits.
> > > // This is only one possibility.
> > > int bitval(unsigned short *a, unsigned long i)
> > > {
> > >   return (a[i / 16ul] >> (i % 16 ul)) & 1;
>
> > > }
>
> > > // Return index of start of longest span of 1's.
> > > // The special value NULLBITINDEX is returned if a is all 0's.
>
> > > // Here's one possibility. Make this 64 bits if bit arrays can be very
> > > large.
> > > typedef unsigned long BITINDEX;
> > > #define NULLBITINDEX (~0ul)
>
> > > BITINDEX longest1span(unsigned short *a, int size)
> > > {
> > >   BITINDEX bitsize = size * 16, i, j;
> > >   // Location and length of longest span found so far.
> > >   BITINDEX r = NULLBITINDEX, len = 0;
>
> > >   i = 0;
> > >   while (1) {
> > >     // Find start of a span of 1's.
> > >     while(1) {
> > >       if (i == bitsize) return r;
> > >       if (bitval(a, i) == 1) break;
> > >       i++;
> > >     }
> > >     // i now points to the start of a span of 1's.
> > >     // Get index of next 0 in j.
> > >     for (j = i + 1; j < bitsize; j++) {
> > >       if (bitval(a, j) == 0) break;
> > >     }
> > >     // [i..j-1] is a new span of 1's
> > >     // update longest span info
> > >     if (j - i > len) {
> > >       r = i;
> > >       len = j - i;
> > >     }
> > >     // set preconditions for new span search
> > >     i = j;
> > >   }
>
> > > }
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Algorithm Geeks" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<algogeeks%2bunsubscr...@googlegroups 
> > .com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/algogeeks?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to