【问题标题】:Determine the minimum register size确定最小寄存器大小
【发布时间】:2014-03-22 11:14:36
【问题描述】:

我实际上是嵌入式系统的新手。我有一个关于确定存储特定值的最小寄存器大小的问题。问题来了:

  1. 为什么需要至少 8 位的寄存器大小来存储 0xFFFFFFF1(有符号数)
  2. 为什么需要至少 16 位的寄存器大小来存储 0b010010110111(有符号数)

【问题讨论】:

  • 我认为需要更多信息。为什么您认为这些是所需的最小寄存器大小?
  • 您的第一个示例有点错误,因为您显示的是 32 位表示,除非您尝试存储“-15”的值,在这种情况下您可以在类似的 2 中存储5 位寄存器中的补码方式(虽然在通用寄存器中不常见,但在专用功能块中确实存在)。不过,要真正回答您的问题,您必须考虑允许哪些 other 值 - 对于给定的值,可以忽略常量前导位,或者对于那些值 alone完全省略“寄存器”,只提供固定线路的值。
  • 只是猜测,但我认为您没有得到位和字节之间的区别。一个字节有 8 位,位是单个值 0 或 1。当以十六进制指定数字时(例如前缀或 0x),每个字符是 4 位或一个半字节,一个字节中有两个半字节。

标签: embedded bit cpu-registers signed


【解决方案1】:

听起来这个练习是为了让您了解符号位在有符号数中的位置,或者符号位的位置,因为它们符号永远延伸。正数将有无数个 0,负数将有无数个 1。只要您至少有一个,您就可以表示该数字,因此您的第一个是 1111....1110001 符号位从第 4 位开始,因此最少只需 5 位寄存器即可保存该数字。您的第二个示例 0b010010110111 我们必须假设那里的 msbit 符号扩展,在这种情况下第 11 位表示符号,因此您至少需要一个 12 位寄存器。现在,如果您的处理器没有 5 位,那么无论下一个大小是最小值(8?)。如果您的处理器没有 12 位寄存器,则下一个大小为 16。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多