0

对于硬件问题,我需要将有符号十进制数 (255) 转换为 8 位二进制补码。

我的问题是我不确定如何用 8 位制作像 255 这样的正数,因为我相信范围是 -128 到 127,对吗?

如果 01111111 是 127,那么我怎样才能用 8 位将 255 转换为二进制。

我想我只是不明白“签名”是指十进制数还是指二进制数。

4

3 回答 3

1

有符号值 255 必须 - 至少 - 以 9 位表示。

0...11111111 = +225

给定一个 8 位表示,你是对的,我们最多只能表示 +127/-128。

如果我们将有符号的 255 转换为 8 位字段,我们将失去第一位的语义含义,只剩下11111111表示 -1(尽管可能是 -0,具体取决于我们的实现)。

尝试取该值的二进制补码将产生:

 11111111
 00000000 (flip bits)
 00000001 (add one)
=       1 (integer value)

就像我在评论中所说的那样,在我看来,这就像一个问题,我会被要求询问我对那个有符号位的理解,并且它消耗了一些数字表示,你似乎已经想通了。

于 2013-08-24T17:19:52.423 回答
0

我绝对不是这类事情的专家,但你确定你的问题是正确的吗?

当然签名仅指二进制数?

于 2013-08-24T16:58:39.657 回答
0

在 8bit 中代表字节,它是无符号的,并且覆盖的范围是从 0 到 255,所以 255 十进制应该是 8bit 中的 11111111

有符号表示如果您必须覆盖从 -255 到 255 的范围,也允许负数,您可以将负数放在一个字节中,将正数放在另一个字节中

于 2013-08-24T17:00:34.553 回答