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