将有符号255转换为8位二进制补码

时间:2013-08-24 16:49:14

标签: signed twos-complement

我需要将带符号的十进制数(255)转换为8位二进制补码以解决硬件问题。

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

如果01111111是127,那么如何才能将255转换成只有8位的二进制数。

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

3 个答案:

答案 0 :(得分:1)

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

0...11111111 = +225

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

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

尝试取这个值的二进制将产生:

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

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

答案 1 :(得分:0)

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

肯定签名仅指二进制数?

答案 2 :(得分:0)

8位代表字节,它是无符号的,覆盖的范围是0到255 所以255位小数应该是11位的11111111

签名表示如果必须覆盖-255到255的范围,也允许使用负数,可以将负数放在一个字节中,将正数放在另一个字节中