我应该用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中减去