【问题标题】:-2 base conversion algorithm suggestion-2 基础转换算法建议
【发布时间】:2015-01-26 10:54:51
【问题描述】:

我正在尝试将整数转换为基数 -2,但在 Ruby 中 .to_s(-2) 不被接受。您还有其他解决方案可以将数字转换为 -2 基数吗?

【问题讨论】:

  • 写出利用整数除法的算法。 Wikipedia article on the subject 很好地描述了这一点,包括负余数的潜在陷阱。
  • 嗯。 -2 等于 8 的幂?
  • @CarySwoveland: 8 在基数 -2 中表示为 (-2)^4 + (-2)^3(因此对应的位串为 11000,从 msb 到 lsb)。跨度>
  • 这是 Python 中的单行代码;我确信它可以很容易地翻译成 Ruby。 negabinary = lambda n: negabinary(-(n>>1)) + str(n&1) if n else ''

标签: ruby math base


【解决方案1】:

改编自Mark Dickinson的评论:

def negabinary(n)
  return negabinary(-(n>>1)) + (n & 1).to_s if n != 0
  return ''
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2018-07-19
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多