立即注册 登录
晓东CAD家园-论坛 返回首页

aimisiyou的个人空间 http://bbs.xdcad.net/?729558 [收藏] [复制] [分享] [RSS]

日志

十进制转二进制

热度 1已有 248 次阅读2014-12-8 20:40 |个人分类:lisp| 十进制转二进制

(defun fbin (n) 
  (setq alst '(30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0))
  (if (= (rem n 2) 1) (setq flag nil)(setq flag 1))
  (setq lst nil)
  (while (> n 1)
      (setq i (fix (/ (log n) (log 2)))) 
      (setq lst (cons i lst))
      (setq n (- n (lsh 1 i)))
  )
 (if (null flag) (setq lst (cons 0 lst)))
(setq alst (member (last lst) alst))
(setq blst (mapcar '(lambda (x) (if (member x (reverse lst) )  1 0)) alst))
 blst
)
(fbin 1000000)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun sr (str)
  (setq strlst (mapcar '(lambda (x) (- x 48)) (vl-string->list str)))
  strlst
)
(defun ften->bin (lst)
    (setq blst nil binstr nil)
    (while (apply 'or (mapcar '(lambda (x) (/= x 0)) lst ))
             (setq flag 0)
             (setq lst (mapcar '(lambda (x) 
                                    (setq z (/ (+ (* flag 10) x) 2))
                                    (setq flag (rem (+ (* flag 10) x) 2))
                                       z 
                                 )
                            lst
                        )
              )
              (setq blst (cons flag blst))
    )
    (setq binstr (apply 'strcat (mapcar '(lambda (x) (itoa x)) blst)))
    binstr
)
(ften->bin (sr (getstring "请输入十进制数n=")))

路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

全部作者的其他最新日志

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-3 17:23 , Processed in 0.193351 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部