我正在学习汇编语言。我发现汇编中的算术可以是有符号的,也可以是无符号的。规则对于两种类型的算术都是不同的,我发现决定应用哪种规则是程序员的头疼问题。因此,程序员应该事先知道算术是否包含负数。如果是,则应使用带符号的算术规则,否则将使用更简单和更容易的无符号算术。我发现无符号算术的主要问题是“如果结果大于它的存储区域怎么办?”使用比所需更大的数据存储区域可以很容易地解决这个问题。但这将消耗额外的字节,数据段的大小将增加。如果代码的大小没有问题,我们不能自由地使用这种技术吗?
发布于 2011-06-10 14:58:00
如果您是程序员,您可以在软件目标域的要求范围内控制您的数据表示。这意味着在开始实际接触代码之前,您需要很好地了解将要处理的数据类型,它将如何排列(在复杂数据类型的情况下),以及它将如何编码(浮点/无符号整数/有符号整数等)。使用与您正在操作的数据类型相匹配的操作是“最安全的”,如果您的设计做得正确,您应该已经知道了。
发布于 2011-06-10 15:22:31
事情没那么简单。大多数算术运算都是符号不可知的:它们既不带符号也不带符号。
对结果的解释-由程序规范决定-是使它们签名或未签名的原因,而不是操作本身。比较指令的正确风格总是需要仔细选择的。
在一些CPU体系结构中,存在不同的带符号和无符号除法指令,但仅此而已。大多数CPU都有算术右移指令风格,它们要么保留高位,要么将其替换为零:这可以分别用作有符号和无符号处理。
https://stackoverflow.com/questions/6302961
复制相似问题