Embedded 确定最小寄存器大小

Embedded 确定最小寄存器大小,embedded,bit,cpu-registers,signed,Embedded,Bit,Cpu Registers,Signed,实际上,我对嵌入式系统还不熟悉。我有一个关于确定存储特定值的最小寄存器大小的问题。问题是: 为什么存储0xFFFFF1(有符号数字)至少需要8位寄存器大小 为什么存储0B010010111(带符号的数字)至少需要16位寄存器大小 听起来这个练习是为了让你了解符号位在一个有符号的数字中的位置,或者符号位在哪里,因为它们符号永远延伸。正数将有无限个0,负数将有无限个1。只要您至少有一个,您就可以表示该数字,因此您的第一个数字是1111…1110001,符号位从第4位开始,因此保存该数字只需要最少5位

实际上,我对嵌入式系统还不熟悉。我有一个关于确定存储特定值的最小寄存器大小的问题。问题是:

  • 为什么存储0xFFFFF1(有符号数字)至少需要8位寄存器大小
  • 为什么存储0B010010111(带符号的数字)至少需要16位寄存器大小

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

    我认为需要更多的信息。为什么您认为这些是所需的最小寄存器大小?您的第一个示例有点错误,因为您显示的是32位表示,除非您试图存储“-15”的值,在这种情况下,您可以在5位寄存器中以类似的2的补码方式进行存储(虽然对于通用寄存器来说并不常见,但它确实存在于特殊用途的功能块中)。要真正回答你的问题,你必须考虑允许其他的值——对于给定的值,它可以忽略恒定的引导位,或者仅仅是那些值省略了“登记”。总的来说,只需提供固定连接的值。只是猜测,但我认为您没有得到位和字节之间的差异。一个字节有8位,位是单值0或1。当以十六进制(例如前缀或0x)指定数字时,每个字符是4位或一个半字节,一个字节中有两个半字节。