首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优雅的二进制加法代码?

优雅的二进制加法代码?
EN

Stack Overflow用户
提问于 2012-04-10 21:18:08
回答 1查看 1.3K关注 0票数 3

我刚刚编写了函数add-register,用于在球拍中对两个n位寄存器进行二进制相加(使用bit-add函数作为助手):

代码语言:javascript
复制
(define (bit-add x y c)
  (values (bitwise-xor x y c) (bitwise-ior (bitwise-and x y)
                                           (bitwise-and x c)
                                           (bitwise-and y c))))

(define (add-registers xs ys)
  (let ([carry 0])
    (values (reverse (for/list ([b1 (reverse xs)] [b2 (reverse ys)])
                       (let-values ([(nb nc) (bit-add b1 b2 carry)])
                         (set! carry nc)
                         nb)))
            carry)))

但我发现我的代码很难看。所以我想知道这篇文章是否可以写得更简洁和优雅?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-10 22:16:16

这是一个新版本的add-registers,看起来更好一些:

代码语言:javascript
复制
(define (add-registers xs ys)
  (for/fold ([carry 0] [bs empty])
     ([b1 (reverse xs)] [b2 (reverse ys)])
     (define-values (nb nc) (bit-add b1 b2 carry))
     (values nc (cons nb bs))))
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10089557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档