8位,16位,32位处理器/微控制器中整数的大小是多少?

时间:2015-04-14 03:02:03

标签: integer microcontroller processor microprocessors

8位,16位,32位处理器/微控制器中的整数大小是多少? 我想这取决于内部累加器/寄存器大小。但不确定。 感谢

3 个答案:

答案 0 :(得分:5)

我只知道一种定义integer数据类型的编程语言,但它很少用于8位和16位架构。 C是用于编程8位,16位和32位架构的最广泛使用的语言,因此我假设您正在寻找C语境中的答案。

C中有几种“整数”数据类型:charshortintlong等等,但我会假设你真的mean是int数据类型。

int的大小不是由架构定义的,它是由C编程语言规范定义的,而且非常模糊。

  

'普通''int对象具有执行环境体系结构建议的自然大小(大到足以包含INT_MININT_MAX范围内的任何值在标题<limits.h>)中。

我认为这意味着它是由编译器的实现决定的。

您可以在此处找到最新的公开版C11标准(在撰写此答案时):http://www.open-std.org/jtc1/sc22/wg14/www/standards.html

以下是我为帮助回答这个问题而进行的一些测试:

  • 在8位Atmel AVR Arduino上,sizeof(int)在使用GCC 4.3.2编译时返回2(例如16位)(WinAVR 20081205)
  • 没有16位MCU或编译器,抱歉!
  • 在32位ARM Cortex-M MCU上,sizeof(int)在使用GCC 4.9.2编译时返回4(例如32位)。
  • 在64位Intel Core i7 CPU上,sizeof(int)返回4(例如32位),无论是编译为32位还是64位。使用Visual Studio 2013和GCC 4.9.2进行测试。

更有趣的答案是选择这些值的原因。

答案 1 :(得分:1)

C:

整数由c标准定义为&#34; natural&#34;数据大小。允许各种平台的C编译器的实现者随意设置整数大小。我认为所有这一点背后的想法是,int应该反映给定平台最佳(最快,最好的资源)的数据大小。

  • Microchip XC8:16位
  • Microchip XC16:16位
  • Microchip XC32:32位
  • Keil:32位

答案 2 :(得分:0)

整数可以是任何大小。处理器在其中没有多少发言权。例如,在Java中,int = 32位。在VB.NET中,存在Int16,Int32和Int64,而默认的Integer = 32位。