【发布时间】: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 ''