将十六进制数转换为2的补码。

问题描述 投票:1回答:1

我想用C语言写一个程序,将十六进制数字转换为2的补码,例如:00008f转换为fffffff71。

到目前为止,我已经搞清楚了如何打印出二进制的2'c补码,但十六进制对我来说似乎是另一回事。

c hex twos-complement
1个回答
1
投票

要计算一个n位十六进制数字的二的补码,要么。

  • 补足每一个数字(把0换成F,把1换成E,以此类推) 然后把1加到整个数字上,或者:
  • 从(十六进制)1中减去数字,后面跟着n个零。

如果数字不是十六进制的整数位,则必须对上面的第一位数字做一些调整。

  • 对于第一种方法,用适当的位数来补充第一个数字。例如,22位,第一个十六进制数字只用了2位,所以把0换成3,1换成2,2换成1,3换成0。
  • 第二种方法,从适当的2的幂中减去。例如,对于22位,从(十六进制)400000中减去。
© www.soinside.com 2019 - 2024. All rights reserved.