[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Strange results
From: |
WJ |
Subject: |
Re: Strange results |
Date: |
3 Nov 2013 00:53:29 GMT |
User-agent: |
XanaNews/1.18.1.6 |
Dwaddle wrote:
> Hi
>
> i've been dabbling around in elisp for a while. Made this function
>
> The issue is the byte var which 'remembers' the result from a previous
> calculation.
>
> (integer-bin 5) [0 0 0 0 0 1 0 1]
> (integer-bin 3) [0 0 0 0 0 1 1 1]
>
> To beat the critics I know it isn't very clean programmed and a loop would
> make it al lot shorter
>
> <code>
> (defun integer-bin (dec)
> "Convert integer to binairy"
> (setq 8bit [128 64 32 16 8 4 2 1])
> (setq byte [0 0 0 0 0 0 0 0])
> (if (= 1 (/ dec (aref 8bit 0))) (when
> (aset byte 0 1)
> (setq dec (- dec 128))))
> (if (< 0 dec)
> (if (= 1 (/ dec (aref 8bit 1))) (when
> (aset byte 1 1)
> (setq dec (- dec 64)))))
> (if (< 0 dec)
> (if (= 1 (/ dec (aref 8bit 2))) (when
> (aset byte 2 1)
> (setq dec (- dec 32)))))
> (if (< 0 dec)
> (if (= 1 (/ dec (aref 8bit 3))) (when
> (aset byte 3 1)
> (setq dec (- dec 16)))))
> (if (< 0 dec)
> (if (= 1 (/ dec (aref 8bit 4))) (when
> (aset byte 4 1)
> (setq dec (- dec 8)))))
> (if (< 0 dec)
> (if (= 1 (/ d<ec (aref 8bit 5))) (when
> (aset byte 5 1)
> (setq dec (- dec 4)))))
> (if (< 0 dec)
> (if (= 1 (/ dec (aref 8bit 6))) (when
> (aset byte 6 1)
> (setq dec (- dec 2)))))
> (if (< 0 dec)
> (if (= 1 1) (when (aset byte 7 1)
> (setq dec (- dec 1)))))
> (print byte)
> )
> </code>
(defun integer->bin (byte)
(let (result)
(dotimes (_ 8)
(push (logand byte 1) result)
(setq byte (lsh byte -1)))
result))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: Strange results,
WJ <=