Yes, yes - that's what I mean. Things get a little muddled on Friday afternoon. The reader converts the representation, and there's not a fast/easy way to get the original representation back and manipulate it.

On Mar 12, 2010, at 4:53 PM, Kevin Downey <redc...@gmail.com> wrote:

uh, you are confusing representation of the thing with the thing.
Integers don't have bases, bases are used when displaying them. The
reader does not convert a "2r0" to a "base-10 Integer value" because
there is no such thing.

On Fri, Mar 12, 2010 at 4:23 PM, Brendan Ribera
<brendan.rib...@gmail.com> wrote:
Whenever you use the "2r0" format, the reader automatically converts it to its base-10 Integer value. This transformation happens at the reader level right now -- check out the 'matchNumber' method in LispReader.java for details. So (as far as I can tell) this means that there is no standalone binary representation for you to use; that is, there's no direct way back from an Integer value to the value that you entered in your program. You *could* do something with Integer/toBinaryString... but then you're slinging
around strings to represent bits, and that just feels dirty.
Are you sure you need to use bit representations instead of ints? Can you not make do with the built in clojure bit-* functions and a bit- concat like
the one below?
(defn bits-in
"Calculates the minimum number of bits that a given Integer occupies."
  [n]
  (inc (int (/ (Math/log n) (Math/log 2)))))
(defn bit-concat
  "Concatenates a collection of Integers at the bit level."
  [& coll]
  (letfn [(concat-fn
           [a b]
           (bit-or
            (bit-shift-left a (bits-in b)) b))]
    (reduce concat-fn coll)))
-Brendan
On Fri, Mar 12, 2010 at 2:26 PM, Scott <sbuck...@gmail.com> wrote:

Two questions

How do I write a function 'bit' that converts an integer to binary
representation:

(bit 0) -> 2r0
(bit 1) -> 2r1
(bit 2) -> 2r10
(bit 3) -> 2r11
.
.
.

As well, as function 'bit-concat' with the following behavior:

(bit-concat 2r1 2r00) -> 2r100
(bit-concat 2r0 2r00) -> 2r000
(bit-concat 2r011 2r1100) -> 2r0111100
.
.
.

I looked into formats, but everything defaults to integer
representation.  I need to stay in binary representation.  Its for a
genetic algorithm with grey coding.

Thanks!

Scott

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with
your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en



--
And what is good, Phaedrus,
And what is not good—
Need we ask anyone to tell us these things?

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to