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

rmbxnbpk  于 2023-02-18  发布在  Ruby
关注(0)|答案(1)|浏览(178)

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

rkue9o1l

rkue9o1l1#

从你的问题看起来你使用的是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 16 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

告诉我这对你有用吗?

相关问题