0

我正在尝试将 FFAD(十六进制)转换为十进制值,然后对其进行 1 和 2 的补码。FFAD 表示为一个 16 位整数。当我将 FFAD 转换为基数 2 时,我得到 1111111110101101。

我的问题是我怎么知道它是否是负数?

我有二进制文件,现在要正常进行补码,我会将最后一位从 0 更改为 1,然后翻转所有位,但作为 16 位整数,我没有更多可用位。由于第 16 位是 1,这是否意味着它是负数?我该怎么做呢?我只是对这个问题感到困惑,任何指针都将不胜感激。

4

1 回答 1

3

它是负面的,因为它被填充了。左填充零表示正数。例如,以下是三位数字的十进制值:

  • 011 = 3
  • 010 = 2
  • 001 = 1
  • 000 = 0
  • 111 = -1
  • 110 = -2
  • 101 = -3
  • 100 = -4

请注意,左侧填充 1 的数字是负数,左侧填充零的数字是正数。

2 补码的标准程序是取反你的位,然后加 1。

1111111110101101 变为 0000000001010010。然后加 1 得到 0000000001010011。

于 2011-10-04T21:46:30.560 回答