c语言 - 将十六进制数转换为其 2 的补码



我应该用C编写一个程序,将十六进制数切换为其2的补码。例如(0000008f到ffffff 71

到目前为止,我已经学会了如何打印二进制的2’c补码,但十六进制对我来说似乎是另一回事。关于我应该朝哪个方向看,有什么建议吗?

要计算n位十六进制数字的两个补码,请执行以下操作之一:

  • 对每个数字进行补码(将0换成F,将1换成E,依此类推(,然后将1加到整个数字上,或者
  • 从(十六进制(一后面跟n个零减去数字

如果数字不是十六进制数字的整数,则必须对第一个数字进行上述调整:

  • 对于第一种方法,使用适当的位数对第一个数字进行补码。例如,对于22位,第一个十六进制数字只使用两位,因此将0换成3,将1换成2,将2换成1,将3换成0
  • 对于第二种方法,从适当的二次方中减去。例如,对于22位,从(十六进制(400000中减去

最新更新