如何表示unsigned int / long

时间:2010-03-04 18:22:23

标签: memory unsigned signed representation

我正在阅读一些汇编教程,其中解释了有符号整数和无符号整数以及它们在计算机内存中的表示之间的区别。

我记得在数字的开头有一些东西,所以它告诉整数是无符号还是有符号。

如果有人知道,请回答。

5 个答案:

答案 0 :(得分:2)

签名号码有许多可能的表示形式,最常见的是two's complement.

答案 1 :(得分:2)

Wikipedia在Signed Number representation上的页面显示了有符号和无符号整数值的最常见内存实现。

Two's complement是最常见的代表。

答案 2 :(得分:2)

MSB不确定该号码是否已签名;在带符号的数字中,它表示该数字是否为负数。在无符号数字中,它只是MSB。这是确定某个号码是被签名还是未签名的程序。

答案 3 :(得分:1)

他是他。棘手的问题。有符号和无符号整数表示完全相同。看着记忆你永远无法区分它们。它来自冯诺依曼的原则之一。差异在哪里?区别在于它们的解释方式。如果变量是signed,则编译器使用命令进行签名的int。此外,如果我们知道这个数字是签名的,那么它的第一位就告诉我们这是签名。转换以~i + 1(c语法)两种方式完成

答案 4 :(得分:0)

有许多可能的表示形式,每个表示形式取决于您的computer's organization。最着名的是

在两种表示中,您可以测试第一个(最重要的)位,以确定该数字是正数(通常是关闭)还是负数(位开启)。也就是说,如果您将该号码视为已签名。如果告诉编译器将这些数字视为无符号,则将符号位用作数据(数据类型的最大值range加倍)。