代表一个带符号的8位整数?

时间:2010-10-08 14:39:04

标签: assembly

如果F6基数十六进制是带符号的8位整数,它以十进制表示多少?

5 个答案:

答案 0 :(得分:6)

F6是二进制值11110110

在二进制补码系统中,第一位用于表示符号。如果为0,则剩余的7位数字代表0-127。如果它是1,那么你使用按位不翻转其他7位,然后加1并否定结果。

所以:

11110110 // Negative, because the first position is 1
1110110 // Removed the leading 1
0001001 // Flip the remaining 7 bits
8 + 1 // Convert bits to decimal values (bits 4 and 1 from the right)
9 + 1 = 10 // Add the 1

因此,F6为-10。

答案 1 :(得分:5)

假设“正常”2的补码,则为-10。在1的补码中它将是-11。签名幅度为-118。

答案 2 :(得分:2)

你可以想到2这样的赞美......第一位被认为是“负面的”所以在一个8位的数字中,通常你会为无符号整数添加它。

11011011
= 1*(2^7)+1*(2^6)+0*(2^5)+1*(2^4)+1*(2^3)+0*(2^2)+1*(2^1)+1*(2^0) = 219

2赞美......

11011011
= -1*(2^7)+1*(2^6)+0*(2^5)+1*(2^4)+1*(2^3)+0*(2^2)+1*(2^1)+1*(2^0) = -37
  ^ Note the negative

第一位被认为是负数,在8位中这意味着2 ^ 7如果设置为负,其余部分被添加到负数以使其减少负数。如果所有位都是1,则它将为-1。

答案 3 :(得分:1)

答案是-10。

答案 4 :(得分:0)

另一种思考两个补数的方法。添加或删除2个电源位数不会改变任何内容。然后对于任何数字x:x = x + 256 = x - 256(或任何n的x + n * 256)。

现在,当你得到一个数字时,你必须遵循一些约定来找出正确的n。 2的补码的惯例是:如果最高有效位为1则为负数(n = -1),如果为0,则为正数(n = 0)。

实际上你只需将x转换为它的十进制值。

F6 = 15 * 16 + 6 = 246.

因为它大于128(最高位的十进制值),所以删除256.

F6 = -10,其他人也找到了。