Bits from Numbers.

S

sdd

I am whacking away at some code to view numbers as bit sequences.
While this is not complete, I'd appreciate some feedback from anyone
who is interested in looking at it:
http://members.dsl-only.net/~daniels/bits.html

As the page describes, bit extract of more than an int's worth of bits
from a long at one go does not yet work.


The basic idea is that the (non-complex) python numbers can be
viewed as an infinite binary bit stream:

...........000101.11000..... is 5.75

There are functions to get the least and most significant bit
numbers, examine a particular bit, and extract a consecutive
chunk of bits.

At the bottom of the page are links to source archives and windows
installers for 2.2 and 2.3.

For now, consider this a pre-alpha. I am soliciting comments
on both the definitions and names of the functions provided.

However, I'd like to point out now that negative integers have
an infinite number of ones _and_ zeros in their expansion above,
so popcount as traditionally defined for negative integers is
unworkable.

-Scott David Daniels
(e-mail address removed)
 
S

Samuel Walters

|Thus Spake sdd On the now historical date of Wed, 07 Jan 2004 16:36:43
-0800|
I am whacking away at some code to view numbers as bit sequences. While
this is not complete, I'd appreciate some feedback from anyone who is
interested in looking at it:

I must say that your module seems to be well thought-out and useful.
I am particularly glad to see the list of identities on the bottom.
Kudos.

Fair warning, I just read the web-page. I haven't yet tried using the
module.

You might try creating a couple of generators so that someone could
iterate through through bit-sequences. I envision four generators:

The first set of two would return a stream of bit-positions from either
ms to ls or ls to ms directions.

The second set would return each bit in a range of bit-positions either
from ms to ls or ls to ms.

I used a similar set of python functions while studying compression and
error correction in data streams. I created some generators that allowed
me to step through files bit-by-bit. If you think this might be a useful
addition, I'll dig up the code for you and we can work on integrating it
into your module.

HTH

Sam Walters.
 
M

Miki Tebeka

Hello Scott,
I am whacking away at some code to view numbers as bit sequences.
While this is not complete, I'd appreciate some feedback from anyone
who is interested in looking at it:
http://members.dsl-only.net/~daniels/bits.html
Looks great.

Several things:
1. I think a new object "bitarray" which will be a subclass of "list" will be
more "natural". Then you'll get:
bitcount(n) -> n.count(1)
bit(n, x) -> n[x]
extract(x, lo, hi) -> n[lo:high]
...
2. There is no function to set a range of bits n = setbits(n, start, end, value)
3. I'd prototype it first in Python and after the interface has matured move it
to C. This way you'll be able to make changes faster. (This is the way the
Python library works - see sets, itertools, heapq ...)

HTH.
Miki.
 
C

Christos TZOTZIOY Georgiou

B

Bengt Richter

I am whacking away at some code to view numbers as bit sequences.
While this is not complete, I'd appreciate some feedback from anyone
who is interested in looking at it:
http://members.dsl-only.net/~daniels/bits.html

As the page describes, bit extract of more than an int's worth of bits
from a long at one go does not yet work.


The basic idea is that the (non-complex) python numbers can be
viewed as an infinite binary bit stream:

...........000101.11000..... is 5.75

There are functions to get the least and most significant bit
numbers, examine a particular bit, and extract a consecutive
chunk of bits.

At the bottom of the page are links to source archives and windows
installers for 2.2 and 2.3.

For now, consider this a pre-alpha. I am soliciting comments
on both the definitions and names of the functions provided.

However, I'd like to point out now that negative integers have
an infinite number of ones _and_ zeros in their expansion above,
so popcount as traditionally defined for negative integers is
unworkable.

No time to look now, but maybe

http://mail.python.org/pipermail/python-list/2003-December/199683.html

will give you something useful? BTW, it proposes a literal string format that takes
care of the infinitely repeating sign bit problem (i.e., you don't repeat it, except
for representing -1 as '11b' for symmetry with '01b' for +1) but you always have a one
or zero leading bit that you can repeat as needed to make whatever width.

Regards,
Bengt Richter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top