2013-03-17 8 views
2

Оба в Java и .net по умолчанию int 32 бит. Имеет ли это отношение к тому, что, когда появились java и .net, большинство используемых процессоров были 32 бит? Или была ли какая-то другая причина выбора 32 в качестве длины бита по умолчанию для целых чисел?Почему int 32 бит?

+1

Я бы сказал, что даже сейчас большинство процессоров, на которых запущен Java-код, являются 32-битными - если нет мобильных телефонов с 64-битными процессорами на борту ... – thkala

+0

'long' или' long int' используется для представления 32 бит тоже ... – Makoto

+4

На всех этих языках есть 16-разрядные, 32-разрядные и 64-разрядные целые числа ... в чем проблема? –

ответ

4

Да, это в основном из-за того, что большинство процессоров были 32 бит. Это также показано в других частях спецификации Java. Например, явно не гарантируется, что long и double (64 бит) чтения и записи являются атомарными, а для всех остальных примитивных типов - это.

+0

ваш ответ не дает понять, почему 32 бит - это (обычный) размер int, ничего не регистрирует cpu-регистры – kirugan

+1

Это 32-разрядный бит, потому что 32-битный процессор наиболее удобен (т. Е. Эффективен) с 32-битными значениями. Я не знаю, что еще нужно объяснить. – Cephalopod

2

Java был основан на C и некоторых C++.

В C char 8-разрядный, short - 16-разрядный, а long long - 64-разрядный. int может быть 16-разрядным или 32-битным, но для простоты в Java они определили, что byte является 8-битным, short - 16-разрядным, int - 32-разрядным, а long - 64-разрядным. В Java char - 16-разрядный без знака.

Короче говоря, от C было четыре типа и четыре размера, и поэтому int оказался 32-разрядным.

+0

Долгое время было доступно в C89 (или smth ...)? – kirugan

+0

Обратите внимание, что ни один из этих размеров на самом деле не гарантирован для C или C++. Это всего лишь самые распространенные реализации. – EJP

Смежные вопросы