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

Kir*_*ran 3 microcontroller integer processor microprocessors

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

Ver*_*rax 5

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

有几个"整数"数据类型在C: ,char,short,int,long等...,但我会假设你真正的意思是什么int数据类型.

a的大小int不是由体系结构定义的,它是由C编程语言规范定义的,而且非常模糊.

A""普通"" int对象具有由执行环境(足够大以包含在范围内的任何值的体系结构建议的大小INT_MIN,以INT_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)无论是针对32位还是64位进行编译,都会返回4(例如32位).使用Visual Studio 2013和GCC 4.9.2进行测试.

一个更有趣的答案是选择这些值的原因.


小智 0

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