首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么二进制到十进制的转换涉及数字'8'?

为什么二进制到十进制的转换涉及数字'8'?
EN

Stack Overflow用户
提问于 2017-12-20 03:28:29
回答 1查看 1.5K关注 0票数 0

我正在研究关于Coder字节的以下编码挑战的解决方案:

使用Ruby,让函数BinaryReversal(str)接受被传递的str参数,这将是一个正整数,取其二进制表示,反转该位字符串,然后以十进制形式返回新的反转字符串。例如:如果str"47",那么这个整数的二进制版本是00101111。您的程序应该反转这个二进制字符串,然后变成:11110100,然后返回这个字符串的十进制版本,即244

解决办法是:

代码语言:javascript
复制
def BinaryReversal(str, dig = 8)
  binary = str.to_i.to_s(2).reverse
  dig += 8 until dig >= binary.length
  binary += '0' until binary.length == dig
  binary.to_i(2)
end

我不明白为什么二进制文件需要将0s添加到它上,直到它的长度等于dig。事实上,我根本不理解dig的作用。

EN

回答 1

Stack Overflow用户

发布于 2017-12-20 03:42:22

当str为"47“时,二进制将被赋值为"111101”。

代码语言:javascript
复制
  binary = str.to_i.to_s(2).reverse

通常,您将二进制值表示为8个字符或8位。此时,您不能简单地将二进制字符串转换回整数。"111101“是二进制的61。

相反,您需要使用零填充"111101“,直到它有8位为止。下面的代码就是这样做的。

代码语言:javascript
复制
  dig += 8 until dig >= binary.length
  binary += '0' until binary.length == dig

一旦有了8位,就可以将其转换回整数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47898369

复制
相关文章

相似问题

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