【发布时间】:2010-03-04 18:22:23
【问题描述】:
我正在阅读一些汇编教程,其中解释了有符号整数和无符号整数以及它们在计算机内存中的表示形式之间的区别。
我记得在数字的开头有一些类似的东西,所以它告诉整数是无符号的还是有符号的。
如果有人知道,请回答。
【问题讨论】:
标签: memory unsigned signed representation
我正在阅读一些汇编教程,其中解释了有符号整数和无符号整数以及它们在计算机内存中的表示形式之间的区别。
我记得在数字的开头有一些类似的东西,所以它告诉整数是无符号的还是有符号的。
如果有人知道,请回答。
【问题讨论】:
标签: memory unsigned signed representation
Signed Number representation 上的维基百科页面显示了最常见的有符号和无符号整数值的内存实现。
Two's complement 是最常见的表示形式。
【讨论】:
有符号数有很多种可能的表示形式,最常见的是two's complement.
【讨论】:
MSB 不判断数字是否有符号;在有符号数中,它表示该数是否为负数。在无符号数字中,它只是 MSB。它是决定一个数字是有符号还是无符号的程序。
【讨论】:
嘿嘿。棘手的问题。有符号和无符号整数的表示完全相同。看着记忆,你永远无法区分它们。它源于冯诺依曼原理之一。那么区别在哪里呢?不同之处在于它们的解释方式。如果变量是有符号的,编译器使用有符号整数的命令。此外,如果我们知道那个数字是有符号的,那么它的第一位就告诉我们它是符号。两种方式都以~i + 1(c 语法)进行转换
【讨论】:
有许多可能的表示形式,每一种都取决于您的computer's organization。最著名的是
在这两种表示中,您都可以测试第一个(最高有效位)位,以确定该数字是正数(通常关闭)还是负数(位打开)。也就是说,如果您将该号码视为已签名。如果您告诉编译器将此类数字视为无符号数,则符号位将用作数据(它将数据类型的最大 range 加倍)。
【讨论】: