当前位置: 首页 > 知识库问答 >
问题:

如何在ruby中将二进制补码转换为十进制?

董嘉祯
2023-03-14

将二进制补码转换为十进制最简单的方法是什么?例如,如果我通常将“1001”之类的字符串转换为十进制,则得到9。但我实际上想得到一个简单的-7。你们有什么建议?,

共有1个答案

微生宝
2023-03-14

从您的问题来看,您似乎在使用4位系统<这可能对你有用,我得到了你想要的结果<这里有两个函数,一个用于4位补码,一个用于16位补码。

  # For 4 bit
  def convert_4bit_to_signed_binary(binary)
    binary_int = binary.to_i(2)
    if binary_int >= 2**3 # for 4 bit
      return binary_int - 2**4
    else
      return binary_int
    end
  end

  # For 16 bit
  def convert_16bit_to_signed_binary(binary)
    binary_int = binary.to_i(2)
    if binary_int >= 2**15 # for 4 bit
      return binary_int - 2**16
    else
      return binary_int
    end
  end

  i = convert_4bit_to_signed_binary('1001')   # will give -7
  j = convert_16bit_to_signed_binary('1001')  # will give 9

  puts i
  puts j  

让我知道这对你有用吗?

 类似资料:
  • 问题内容: 我正在寻找一种简单的方法来在Swift中将二进制数转换为十进制数。例如,二进制的“ 10”变为十进制的“ 2”。 谢谢, 问题答案: 更新 为 斯威夫特2: 所有整数类型有 现在的方法,该方法根据给定的基数将字符串转换为整数: (先前的答案:) 您可以简单地使用BSD库函数,该函数根据给定的基数将字符串转换为数字:

  • 我试图找到一种快速/简单的方法,将二元补码字符串转换为负十进制数。我曾尝试使用这个问题中提出的方法,但它不起作用。这是我正在尝试运行的代码: 当我运行此代码时,结果是9。我错过了什么吗?我做错了什么?

  • 问题内容: 如何在Swift中将Int转换为UInt8?例。我想将数字22转换为0b00010110 问题答案: 您可以使用带有参数的初始化程序将十进制值转换为人类可读的二进制 表示形式 : 如果您愿意,也可以很容易地用任意数量的零填充它: 斯威夫特5

  • 问题内容: 我正在尝试编写将数字转换为二进制的代码,这就是我写的。它给了我一些我不理解的Eclipse错误。怎么了 还有其他建议吗?我想学习并听取任何修复建议。谢谢。 错误消息: 类型中的方法不适用于参数() 这行有多个标记 令牌“ ”的语法错误,;; 预期 令牌“ ”的语法错误,;; 预期 是变量的无效类型 这行有多个标记 令牌“ mod”的语法错误,无效的AssignmentOperator

  • 我正在尝试将数字从十进制值转换为其IEEE 752形式。例如: 我写了这个方法: 有个问题我解决不了,我再举个例子说清楚。 但是当数字为负数时,例如 我收到以下错误: 这意味着我的代码可以完美地处理正数(包括零),但如果是负数,代码就会崩溃。问题出在哪里? 笔记 我想我可以用这种方式解决我的问题 检查是否有一个字符At(0)等于1 如果是(numero.charAt(0)==1),则删除第一个字符

  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只