在Ruby中,如何将有符号整数转换为nbBits上的十六进制表示形式?

在Ruby中,如何将有符号整数转换为nbBits上的十六进制表示形式?,ruby,bit-manipulation,Ruby,Bit Manipulation,例如:8位上的-78_base10是0xB2 伪算法说:“-A=/A+1” 例如: -78=>78=>01001110 然后应用“条”:01001110=>10110001 然后“+1”:10110001+1=10110010 转换为十六进制:0xB2 如何在Ruby中很好地获得结果(有或没有这个“算法”)。类似的东西怎么样 def signed_int_to_hex(n) "0x%X" % (n % 2 ** 8) end signed_int_to_hex(-78) #=>

例如:8位上的-78_base10是0xB2

伪算法说:“-A=/A+1”

例如:

  • -78=>78=>01001110
  • 然后应用“条”:01001110=>10110001
  • 然后“+1”:10110001+1=10110010
  • 转换为十六进制:0xB2

如何在Ruby中很好地获得结果(有或没有这个“算法”)。

类似的东西怎么样

def signed_int_to_hex(n)
  "0x%X" % (n % 2 ** 8)
end

signed_int_to_hex(-78) #=> "0xB2"

像这样的怎么样

def signed_int_to_hex(n)
  "0x%X" % (n % 2 ** 8)
end

signed_int_to_hex(-78) #=> "0xB2"

如果'bar'只是一的补码函数,请这样写。@Qerub算法是一的补码bar'只是位反转。@AllanNørgaard Ones'补码是位反转。参见en.wikipedia.org/wiki/Ones%27_.@Qerub是的,当然是。我应该写的是,算法是二的补码。很抱歉造成混淆如果“bar”只是一的补码函数,请这样写。@Qerub算法是一的补码bar'只是位反转。@AllanNørgaard Ones'补码是位反转。参见en.wikipedia.org/wiki/Ones%27_.@Qerub是的,当然是。我应该写的是,算法是二的补码。很抱歉让人困惑有趣的是,在答案被接受一个月后,投反对票是为了什么?有趣的是,在答案被接受一个月后,投反对票是为了什么?