Bits from Numbers.

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • sdd

    Bits from Numbers.

    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:


    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:

    ...........0001 01.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
    Scott.Daniels@A cm.Org

  • Samuel Walters

    #2
    Re: Bits from Numbers.

    |Thus Spake sdd On the now historical date of Wed, 07 Jan 2004 16:36:43
    -0800|
    [color=blue]
    > 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:[/color]

    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.


    --
    Never forget the halloween documents.

    """ Where will Microsoft try to drag you today?
    Do you really want to go there?"""

    Comment

    • Miki Tebeka

      #3
      Re: Bits from Numbers.

      Hello Scott,
      [color=blue]
      > 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[/color]
      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.

      Comment

      • Christos TZOTZIOY Georgiou

        #4
        Re: Bits from Numbers.

        On Wed, 07 Jan 2004 16:36:43 -0800, rumours say that sdd
        <daniels@dsl-only.net> might have written:
        [color=blue]
        >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[/color]

        Is it similar to BitDecoder which you can find at the Python Package
        Index?



        If yes, perhaps you should contact its author and then co-operate on it.
        --
        TZOTZIOY, I speak England very best,
        Ils sont fous ces Redmontains! --Harddix

        Comment

        • Bengt Richter

          #5
          Re: Bits from Numbers.

          On Wed, 07 Jan 2004 16:36:43 -0800, sdd <daniels@dsl-only.net> wrote:
          [color=blue]
          >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:
          >
          > ...........0001 01.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.[/color]

          No time to look now, but maybe



          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

          Comment

          Working...