C 将十六进制数转换为其2';补语

C 将十六进制数转换为其2';补语,c,hex,twos-complement,C,Hex,Twos Complement,我应该用C写一个程序,把十六进制数转换成它的补码2。 e、 g)000000 8F至FFFFFF 71 到目前为止,我已经知道如何打印出二进制的2'c补码,但十六进制对我来说似乎是另一回事。 关于我应该看哪个方向有什么建议吗?要计算n位十六进制数字的两个补码,可以: 对每个数字进行补码(0表示F,1表示E,依此类推),然后将一个数字加到整个数字上,或 将数字从(十六进制)1减去n个零 如果数字不是十六进制数字的整数,则必须对第一个数字的上述内容进行一些调整: 对于第一种方法,使用适当的位数

我应该用C写一个程序,把十六进制数转换成它的补码2。 e、 g)000000 8F至FFFFFF 71


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

要计算n位十六进制数字的两个补码,可以:

  • 对每个数字进行补码(0表示F,1表示E,依此类推),然后将一个数字加到整个数字上,或
  • 将数字从(十六进制)1减去n个零
如果数字不是十六进制数字的整数,则必须对第一个数字的上述内容进行一些调整:

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

“到目前为止,我已经知道如何打印出二进制的2'c补码,”-->post该代码。“十六进制数”是一个字符串。因此,将值转换为整数,取2的补码,然后转换回字符串。输入数字中的(十六进制)位数是否有指定的界限?