Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #76205
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Subject | Re: Log base 2 of large integers |
| Date | 2014-08-13 16:17 +0200 |
| Organization | None |
| References | <lsfnr6$pbc$1@news.albasani.net> <53eb6903$0$29982$c3e8da3$5496439d@news.astraweb.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.12927.1407939487.18130.python-list@python.org> (permalink) |
Steven D'Aprano wrote: > Mok-Kong Shen wrote: > >> >> I like to compute log base 2 of a fairly large integer n but >> with math.log(n,2) I got: >> >> OverflowError: long int too large to convert to float. >> >> Is there any feasible work-around for that? > > If you want the integer log2, that is, the floor of log2, the simplest way > is calculate it like this: > > def log2(n): > """Return the floor of log2(n).""" > if n <= 0: raise ValueError > i = -1 > while n: > n //= 2 > i += 1 > return i > > log2(511) > => returns 8 > log2(512) > => returns 9 > log2(513) > => returns 9 For base 2 there is also the bit_length() method: >>> 511 .bit_length() 9 >>> 512 .bit_length() 10 >>> 513 .bit_length() 10
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Log base 2 of large integers Mok-Kong Shen <mok-kong.shen@t-online.de> - 2014-08-13 15:05 +0200
Re: Log base 2 of large integers Skip Montanaro <skip@pobox.com> - 2014-08-13 08:16 -0500
Re: Log base 2 of large integers Mok-Kong Shen <mok-kong.shen@t-online.de> - 2014-08-13 15:50 +0200
Re: Log base 2 of large integers Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-08-13 23:32 +1000
Re: Log base 2 of large integers Mok-Kong Shen <mok-kong.shen@t-online.de> - 2014-08-13 15:46 +0200
Re: Log base 2 of large integers Marko Rauhamaa <marko@pacujo.net> - 2014-08-13 17:00 +0300
Re: Log base 2 of large integers Andrew Jaffe <a.h.jaffe@gmail.com> - 2014-08-13 15:06 +0100
Re: Log base 2 of large integers Peter Otten <__peter__@web.de> - 2014-08-13 16:17 +0200
Re: Log base 2 of large integers Peter Otten <__peter__@web.de> - 2014-08-13 15:58 +0200
Re: Log base 2 of large integers Peter Pearson <ppearson@nowhere.invalid> - 2014-08-13 16:12 +0000
Re: Log base 2 of large integers Marko Rauhamaa <marko@pacujo.net> - 2014-08-13 19:15 +0300
Re: Log base 2 of large integers Chris Angelico <rosuav@gmail.com> - 2014-08-14 02:18 +1000
Re: Log base 2 of large integers Ian Kelly <ian.g.kelly@gmail.com> - 2014-08-13 12:13 -0600
Re:Log base 2 of large integers Dave Angel <davea@davea.name> - 2014-08-13 10:10 -0400
csiph-web