ruby中如何将二进制补码转换为十进制?
How to convert two's complement binary to decimal in ruby?
将二进制补码转换为十进制的最简单方法是什么?
例如,如果我通常将诸如“1001”之类的字符串转换为十进制,我会得到 9。但我实际上试图得到一个简单的 -7。大家有什么建议吗?,
从你的问题看来你使用的是 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
让我知道这是否适合您?
将二进制补码转换为十进制的最简单方法是什么? 例如,如果我通常将诸如“1001”之类的字符串转换为十进制,我会得到 9。但我实际上试图得到一个简单的 -7。大家有什么建议吗?,
从你的问题看来你使用的是 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
让我知道这是否适合您?