8位,16位,32位处理器/微控制器中的整数大小是多少? 我想这取决于内部累加器/寄存器大小。但不确定。 感谢
答案 0 :(得分:5)
我只知道一种定义integer
数据类型的编程语言,但它很少用于8位和16位架构。 C是用于编程8位,16位和32位架构的最广泛使用的语言,因此我假设您正在寻找C语境中的答案。
C中有几种“整数”数据类型:char
,short
,int
,long
等等,但我会假设你真的mean是int
数据类型。
int
的大小不是由架构定义的,它是由C编程语言规范定义的,而且非常模糊。
'普通''
int
对象具有执行环境体系结构建议的自然大小(大到足以包含INT_MIN
到INT_MAX
范围内的任何值在标题<limits.h>
)中。
我认为这意味着它是由编译器的实现决定的。
您可以在此处找到最新的公开版C11标准(在撰写此答案时):http://www.open-std.org/jtc1/sc22/wg14/www/standards.html。
以下是我为帮助回答这个问题而进行的一些测试:
sizeof(int)
在使用GCC 4.3.2编译时返回2(例如16位)(WinAVR 20081205)sizeof(int)
在使用GCC 4.9.2编译时返回4(例如32位)。sizeof(int)
返回4(例如32位),无论是编译为32位还是64位。使用Visual Studio 2013和GCC 4.9.2进行测试。更有趣的答案是选择这些值的原因。
答案 1 :(得分:1)
C:
整数由c标准定义为&#34; natural&#34;数据大小。允许各种平台的C编译器的实现者随意设置整数大小。我认为所有这一点背后的想法是,int应该反映给定平台最佳(最快,最好的资源)的数据大小。
答案 2 :(得分:0)
整数可以是任何大小。处理器在其中没有多少发言权。例如,在Java中,int = 32位。在VB.NET中,存在Int16,Int32和Int64,而默认的Integer = 32位。