【发布时间】:2012-09-26 03:24:56
【问题描述】:
我对方案很陌生。我知道如何从十进制转换为二进制,但我无法提供反过来转换的逻辑。我想从二进制数列表中获取一个十进制数。
十进制示例:
(decimal '(1 0 1)) ---> 5
十六进制示例:
(hexadecimal '(1 0 0 0 1)) ----> 12
到目前为止,我认为可以将列表的最后一个数字乘以 2i,其中 i 表示列表中的位置,因此最后一个数字乘以 1,即下一个接两个,以此类推。最后在每个递归循环中添加这些数字。不知道如何执行这个想法,也不知道它是否可行。
【问题讨论】:
-
这个问题对输入列表中二进制数字的排序有点不清楚,输入示例无助于澄清。考虑输入
'(1 0 0)。现在,列表的最后一个数字是多少,第一个数字是多少?我会说0是最后一个,1是第一个。不要将它们乘以 2^i,其中 i 是列表中数字的位置。第一个数字在位置 0,最后一个数字在位置 2,是吗?那么我们有 1*2^0 + 0*2^2 = 1。或者,第一个数字在位置 2,最后一个数字在位置 0,所以我们有 1*2^2 + 0*2^0 = 4. 是哪个?
标签: list binary scheme hex decimal