Каков размер целого числа в 8-битных, 16-разрядных, 32-разрядных процессорах/микроконтроллерах? Я думаю, это зависит от внутреннего размера аккумулятора/регистра. Но не уверен. ThanksКаков размер целого числа в 8-битных, 16-разрядных, 32-разрядных процессорах/микроконтроллерах?
ответ
Целые числа могут быть любого размера. Процессор не имеет большого смысла в этом. Например, в Java, int = 32 бит. В VB.NET существуют Int16, Int32 и Int64, а по умолчанию Integer = 32 бит.
Я всегда знал, что Java ограничен, но 4-битный int? В самом деле? – paxdiablo
Я знаю только один язык программирования, который определяет тип данных 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.
Более интересным ответом было бы то, почему эти значения были выбраны.
С:
Целое число определяется с-стандарта как «естественный» размер данных. Разработчикам C-Compilers для различных платформ разрешено устанавливать целочисленный размер в основном по желанию. Я думаю, что идея всего этого заключается в том, что int должен отражать размер данных, который лучше всего работает (самый быстрый, самый дружественный для пользователя) для данной платформы.
- Микрочип XC8: 16 бит
- Микрочип XC16: 16 бит
- Микрочип XC32: 32 бит
- Кейль: 32 бит
C# INT 32-битный на всех процессорах, на которых C# может работать. –
Это зависит от языка и реализации. – Barmar
https://social.msdn.microsoft.com/Forums/en-US/7ebf4a88-2bf5-448d-8abe-c63ad7938429/what-is-the-size-of-int-in-c?forum=csharplanguage –