【问题标题】:When we say a register has 32 bit, what does that really mean in assembly language?当我们说寄存器有 32 位时,这在汇编语言中到底意味着什么?
【发布时间】:2016-04-06 15:43:36
【问题描述】:

根据维基百科,

32位寄存器可以存储232个不同的值不同的值。它 进一步说“用两种最常见的表示, 范围是 0 到 4,294,967,295 (232 - 1) 表示为 一个(无符号)二进制数和 -2,147,483,648 (-231) 到 2,147,483,647 (231 - 1) 表示为二进制补码"

那么如何转化为一个真实的例子呢?

一个。这是否意味着我可以在 32 位寄存器中存储 0 和 1 和 2 和 3 和 4 .... 4,294,967,295?

b.如果我想存储相同的数字怎么办,比如在同一个寄存器中 4294967296 次。我可以这样做吗?

c。有没有办法适当地计算它什么时候开始溢出?我不知道每个整数是否具有特定数量的位(如价格标签),我们可以将其加起来以计算何时开始溢出。

【问题讨论】:

  • 我投票结束这个问题,因为它不是(还)一个编程问题。
  • @RaymondChen 尽管该问题不包含任何代码,但它肯定涉及有关编程的基本主题。不确定这是否足以满足 Stack Overflow 的需求......?
  • @coolparadox 它更多的是概念性,而不是与特定编程问题直接相关,所以它并不是真正的主题。

标签: assembly


【解决方案1】:
  1. 没有。这意味着您可以在寄存器中存储值 0 1 2 ... 4,294,967,295。
  2. 是的,尽管只存储一次相同的值就足够了,因为可以无限次读取寄存器。
  3. 几乎所有微处理器都实现了一个进位标志,当算术运算的结果(例如两个数字相加)由于位深度不足而无法存储在答案寄存器中时,该标志就会被设置。这可以用作汇编语言中溢出检测的一种形式。

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2023-03-02
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多