8 位、16 位、32 位处理器/微控制器中整数的大小是多少?
我想这取决于内部累加器/寄存器的大小。但不确定。
谢谢
我只知道一种编程语言定义了integer
数据类型,但很少用于 8 位和 16 位体系结构。 C 是最广泛使用的 8 位、16 位和 32 位架构编程语言,因此我假设您正在 C 上下文中寻找答案。
C 中有几种“整数”数据类型:char
, short
, int
, long
等等...,但我会假设你真正的意思是int
数据类型。
的大小int
不是由体系结构定义的,而是由 C 编程语言规范定义的,而且非常模糊。
一个‘平淡’int
对象具有执行环境体系结构建议的自然大小(大到足以包含范围内的任何值)INT_MIN
to INT_MAX
如标题中所定义<limits.h>
).
我将此解释为它是由编译器的实现决定的。
您可以在此处找到 C11 标准的最新公开版本(在撰写本答案时):http://www.open-std.org/jtc1/sc22/wg14/www/standards.html 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)
无论是针对 32 位还是 64 位编译,都会返回 4(例如 32 位)。使用 Visual Studio 2013 和 GCC 4.9.2 进行测试。
一个更有趣的答案是为什么选择这些值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)