计算机如何识别某个给定的数字是否处于其两种形式?

时间:2016-01-14 17:25:35

标签: binary computer-science computer-architecture twos-complement

我理解这两个补充是什么以及它有什么用处。我想知道的是,计算机如何确定该数字是否为其补码形式?

如何以及何时决定1111 1110是-2而不是254?它是在操作系统级别处理吗?

2 个答案:

答案 0 :(得分:2)

据我所知,它是可靠的编程语言。

让我们说整数分配1个字节的内存(为了简单起见)。

如果它是UNSIGNED整数(只有正数),你可以使用0到255之间的任何数字(总共2 ^ 8个数字,包括零)。

<00> 00000000将为0,并且 11111111将是255十进制。

但如果你的整数是SIGNED(你可以同时使用负数和正数),你可以使用-127到127之间的值,包括零(再次是2 ^ 8个数字)。

如果您的编译器碰到11111111 SIGNED int值,它将不会将其解释为255,因为signed int仅允许0到127的值为正数,因此它将其作为-1。下一个,-2将是11111110(十进制254),依此类推......

答案 1 :(得分:1)

计算机已经期望数据处于(或不处于)二进制补码形式(否则将无法确定它是否为-2或254)。是的,这可能会在操作系统级别决定。

在使用高级编程语言声明变量时,您可能会将此与设置变量类型时使用的相同想法联系起来;你很可能将类型设置为“十进制”,例如,或“整数”,然后编译器将期望值坚持这种类型。