二进制到 16 位无符号和 16 位有符号量值

问题描述 投票:0回答:3

我因病缺席了一天的课程,所以我去看了我的教授。那天的材料在网上,我被困在这一点上。他的笔记没有解释如何做到这一点。我可以在质量之间进行转换(十进制到八进制、十六进制、二进制等),但我不能这样做。

有什么帮助吗?一个例子确实可以帮助我快速理解。我将发布他的幻灯片示例:

1010 0000 0100 0101 as an unsigned value
= (1 * 2^15) + (1 * 2^13) + (1 * 2^6) + (1 * 2^2) + (1 * 2^0)
= (32,768) + (8192) + (64) + (4) + (1)
= 32,768 + 8261 = 41,029 base 10



1010 0000 0100 0101 as a signed value
= - [(1 * 2^13) + (1 * 2^6) + (1 * 2^2) + (1 * 2^0)] 
= -8,261 base 10

我想即使我生病了我也应该去上课。

decimal unsigned-integer signed-integer
3个回答
1
投票

符号是第15位。因此,您所要做的基本上就是计算带有 1 的位置(即 2^位置)并将它们加在一起。


1
投票

有符号整数和无符号整数之间的区别在于其中一位,在本例中最左边的位用于指示该值是正数还是负数。在这种情况下,如果最左边的位为 1,则值为负,而当最左边的位为 0 时,值为正。

所以在你的教授给出的例子中,

1010 0000 0100 0101 

可以解释为有符号整数或无符号整数,具体取决于具体情况。当解释为有符号整数时,该值的计算结果

(1 * 2^15) + (1 * 2^13) + (1 * 2^6) + (1 * 2^2) + (1 * 2^0) = 41092

当解释为无符号值时,您可以从最左边的位获取符号,并从其余位获取整数的值

- [(1 * 2^13) + (1 * 2^6) + (1 * 2^2) + (1 * 2^0)]  = - 8261

希望这有帮助!


0
投票

虽然已经晚了,但是哈哈: 当你得到这个 1010 0000 0100 0101 作为无符号值时

1010 0000 0100 0101 从右到左开始计算每个位值 0->

1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 值 0-15 将是运算中的指数,并且以 2 为底,因此您将执行此运算 (1 * 2^15)+(0 * 2^14)+ (1 * 2^13) +...(1 * 2^0) 其中1代表数字,2^15代表转换。因为你可以看到任何乘以 0 的结果都是 0,所以我们可以忽略这些并继续添加 1 点的指数。一旦你把所有这些加起来,你应该会得到正确的答案。 因为它是一个无符号值,所以您不必担心左边的第一个数字是 +ve 或 -ve。

© www.soinside.com 2019 - 2024. All rights reserved.