mahuan1279 发表于 2014-12-12 19:33:55

十进制转二进制

(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=")))

434939575 发表于 2014-12-12 22:38:53

用在哪方面啊?

mahuan1279 发表于 2014-12-13 18:23:57

434939575 发表于 2014-12-12 22:38 static/image/common/back.gif
用在哪方面啊?

二进制的用处很多啊,举个简单的,用加法来实现乘法就用到二进制。

看天的小树 发表于 2015-12-19 08:46:56

(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=")));能否用于幂计算十进制转二进制

pengfei2010 发表于 2017-10-25 19:50:07

回帖是一种美德!感谢楼主的无私分享 谢谢

yxp 发表于 2018-4-2 02:59:26

搜了一下进制转换,就发现这一个帖子,就是转换效率有点惨不忍睹。

mahuan1279 发表于 2018-4-9 16:26:12

本帖最后由 mahuan1279 于 2018-4-9 16:27 编辑

yxp 发表于 2018-4-2 02:59
搜了一下进制转换,就发现这一个帖子,就是转换效率有点惨不忍睹。
不知你的数据是什么?会导致惨不忍睹的效果?

yxp 发表于 2018-4-10 10:01:46

本帖最后由 yxp 于 2018-4-10 10:04 编辑

BASE64码的转换时,需要对二进制数据操作,贴一个我的转换程序
;;十进制转换为二进制
(defun d2b(i / s)
(while(> i 0)(setq s (cons(logand i 1) s) i (lsh i -1)))s
)

mahuan1279 发表于 2018-4-10 11:16:43

yxp 发表于 2018-4-10 10:01
BASE64码的转换时,需要对二进制数据操作,贴一个我的转换程序

移位和逻辑运算效率的确很高,但1秒和0.01秒在视觉上没什么区别,谈不上惨不忍睹吧。我只是想对任意输入数值都可转换,你的数据超过22亿就不行了。
页: [1]
查看完整版本: 十进制转二进制