2015-04-14 6 views
2

Каков размер целого числа в 8-битных, 16-разрядных, 32-разрядных процессорах/микроконтроллерах? Я думаю, это зависит от внутреннего размера аккумулятора/регистра. Но не уверен. ThanksКаков размер целого числа в 8-битных, 16-разрядных, 32-разрядных процессорах/микроконтроллерах?

+0

C# INT 32-битный на всех процессорах, на которых C# может работать. –

+3

Это зависит от языка и реализации. – Barmar

+0

https://social.msdn.microsoft.com/Forums/en-US/7ebf4a88-2bf5-448d-8abe-c63ad7938429/what-is-the-size-of-int-in-c?forum=csharplanguage –

ответ

0

Целые числа могут быть любого размера. Процессор не имеет большого смысла в этом. Например, в Java, int = 32 бит. В VB.NET существуют Int16, Int32 и Int64, а по умолчанию Integer = 32 бит.

+1

Я всегда знал, что Java ограничен, но 4-битный int? В самом деле? – paxdiablo

4

Я знаю только один язык программирования, который определяет тип данных integer, но он редко используется для 8 и 16-разрядных архитектур. C является наиболее широко используемым языком для программирования 8-разрядных, 16-битных и 32-разрядных архитектур, поэтому я предполагаю, что вы ищете ответ в контексте C.

Существует несколько типов данных «целочисленные» в C: char, short, int, long и т. д., но я буду считать, что вы на самом деле имеете в виду тип данных int.

Размер 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) возвращает 2 (например, 16-бит) при компиляции с GCC 4.3.2 (WinAVR 20081205)
  • У вас нет 16-битного MCU или компилятора, извините!
  • На 32-битном MCM Cortex-M, sizeof(int) возвращает 4 (например, 32 бита) при компиляции с GCC 4.9.2.
  • На 64-битном процессоре Intel Core i7 sizeof(int) возвращает 4 (например, 32-разрядные) независимо от того, скомпилирован ли он для 32-разрядных или 64-разрядных. Протестировано как с Visual Studio 2013, так и с GCC 4.9.2.

Более интересным ответом было бы то, почему эти значения были выбраны.

1

С:

Целое число определяется с-стандарта как «естественный» размер данных. Разработчикам C-Compilers для различных платформ разрешено устанавливать целочисленный размер в основном по желанию. Я думаю, что идея всего этого заключается в том, что int должен отражать размер данных, который лучше всего работает (самый быстрый, самый дружественный для пользователя) для данной платформы.

  • Микрочип XC8: 16 бит
  • Микрочип XC16: 16 бит
  • Микрочип XC32: 32 бит
  • Кейль: 32 бит