将十六进制转换为二进制,将一位和二位的补码转换为16位

时间:2011-10-04 21:19:06

标签: binary hex twos-complement ones-complement

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

我的问题是如何知道它是否为负数?

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

1 个答案:

答案 0 :(得分:3)

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

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

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

2赞美的标准程序是否定你的位,然后加1。

1111111110101101变为0000000001010010。然后添加1以获取0000000001010011。