On 28 Apr, 17:24, Li Wang <li.wan...@gmail.com> wrote: > 2009/4/29 Tim Chase <python.l...@tim.thechases.com>: > > > Li Wang wrote: > > >> Hi: > > >> If I use an integer to represent bits: > >> e.g. 99 represents '1100011' > > >> How can I locate, say the second bit of 99(i.e. '1')? > > >> Although bin(99)[4] could be used to locate it, this transform cost > >> too much memory (99 only needs 2Bytes, while string '1100011' needs > >> 7Bytes). > > >> Anyone knows how to locate the second bit without using bin() function? > > > You mean > > > def get_bit(number, bit): > > return (number >> bit) & 1 > > > ? > > Hummm, I have tried this method too, the problem is its time > complexity. If the length of my bits is n, then the time complexity is > O(n). When I tried to implement this in practice, it did consume a lot > of time. > > So do you know how could I locate the bit in O(1) time? Transform it > into a string is a method, but takes too much space (when I try to > process a 2M file, it used more than 100M memory.....). > > Thank you very much. > > > -tkc > > -- > Li > ------ > Time is all we have > and you may find one day > you have less than you think
The my solution is good, but the Tim's solution is better, and it is O (1) in time and space. What is you search? I dont'know you general problem, but search the value of a bit in a 2M file ... is strange ..... Hi. -- http://mail.python.org/mailman/listinfo/python-list