максимальное значение целого числа

В C целое число (для 32-разрядной машины) составляет 32 бита, и оно колеблется от -32,768 до +32,767. В Java целое число также равно 32 битам, но оно варьируется от -2147,483,648 до +2,147,483,647.

Я не понимаю, как диапазон отличается в Java, хотя количество бит одинаково. Может кто-нибудь объяснить это?

В C сам язык не определяет представление некоторых типов данных. Он может варьироваться от машины к машине, на встроенных системах int может быть 16 бит в ширину, хотя обычно это 32 бит.

Единственное требование состоит в том, что short int <= int <= long int по размеру. Кроме того, существует рекомендация, что int должен представлять собственную емкость процессора .

Все типы подписаны. unsigned модификатор позволяет использовать старший бит как часть значения (в противном случае он зарезервирован для бита знака).

Вот краткая таблица возможных значений возможных типов данных:

  width minimum maximum signed 8 bit -128 +127 signed 16 bit -32 768 +32 767 signed 32 bit -2 147 483 648 +2 147 483 647 signed 64 bit -9 223 372 036 854 775 808 +9 223 372 036 854 775 807 unsigned 8 bit 0 +255 unsigned 16 bit 0 +65 535 unsigned 32 bit 0 +4 294 967 295 unsigned 64 bit 0 +18 446 744 073 709 551 615 

В Java спецификация языка Java определяет представление типов данных.

Порядок: byte 8 бит, short 16 бит, int 32 бит, long 64 бита. Все эти типы подписаны , нет неподписанных версий. Тем не менее, манипуляции с битами обрабатывают числа, поскольку они были неподписанными (то есть правильно обрабатывают все биты).

Символ символьного типа char имеет ширину 16 бит, без знака и содержит символы с использованием кодировки UTF-16 (однако можно назначить char произвольное беззнаковое 16-битное целое число, которое представляет недопустимый код символа)

  width minimum maximum SIGNED byte: 8 bit -128 +127 short: 16 bit -32 768 +32 767 int: 32 bit -2 147 483 648 +2 147 483 647 long: 64 bit -9 223 372 036 854 775 808 +9 223 372 036 854 775 807 UNSIGNED char 16 bit 0 +65 535 

В C целое число (для 32-разрядной машины) составляет 32 бит и оно варьируется от -32768 до +32767.

Неправильно. 32-разрядное целое число со знаком в представлении комплемента 2 имеет диапазон от -2 31 до 2 31 -1, который равен -2147,483,648 до 2,147,483,647.

32-битное целое число варьируется от -2,147,483,648 до 2,147,483,647. Однако тот факт, что вы находитесь на 32-битной машине, не означает, что ваш компилятор C использует 32-разрядные целые числа.

Определение языка C определяет минимальные диапазоны для различных типов данных. Для int этот минимальный диапазон составляет от -32767 до 32767, то есть значение int должно быть не менее 16 бит. Реализация может обеспечить более широкий тип int с более широким диапазоном. Например, на сервере разработки SLES 10 я работаю, диапазон от -2147483647 до 2137483647.

Есть еще некоторые системы, которые используют 16-битные типы int (All The World Is not VAX x86), но есть много, которые используют 32-битные типы int и, возможно, некоторые из них используют 64-разрядные.

Язык C был разработан для работы на разных архитектурах. Java была разработана для работы на виртуальной машине, которая скрывает эти архитектурные отличия.

Это связано с тем, что в C-integer на 32-битной машине не означает, что для его хранения используются 32 бита, это может быть и 16 бит. Это зависит от машины (зависит от реализации).

Плакат имеет смешанные типы java. в java, его C in является коротким: короткий (16 бит) = -32768 до 32767 int (32 бит) = -2,147,483,648 до 2,147,483,647

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Фактически размер в битах int , short , long зависит от реализации компилятора.

Например, на моем 64-битном Ubuntu у меня short 32 битное, а на другой 32-битной версии Ubuntu – 16 бит.

Строгий эквивалент java int long int в C.

Изменить: если int32_t определен, то это эквивалентно с точки зрения точности. long int гарантирует точность java int , потому что это гарантия быть размером не менее 32 бит.

В диапазоне C для __int32 от -2147483648 до 2147483647. См. Здесь для полного диапазона.

 unsigned short 0 to 65535 signed short –32768 to 32767 unsigned long 0 to 4294967295 signed long –2147483648 to 2147483647 

Нет никаких гарантий, что «int» будет 32 бита, если вы хотите использовать переменные определенного размера, особенно при написании кода, который включает в себя манипуляции с битами, вы должны использовать «Стандартные типы целого».

В Java

Тип данных int представляет собой целое число дополнений, состоящее из 32 бит. Он имеет минимальное значение -2 147 483 648 и максимальное значение 2 147 483 647 (включительно).

в стандарте C вы можете использовать INT_MAX как максимальное значение «int», эта константа должна быть определена в «limits.h». Аналогичные константы определены для других типов ( http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html ), как указано, эти константы зависят от реализации, но имеют минимальное значение в соответствии с минимальными битами для каждого типа, как указано в стандарте.

На самом деле это действительно просто понять, вы можете даже вычислить его с помощью калькулятора google: у вас есть 32 бита для int, а компьютеры – двоичные, поэтому вы можете иметь 2 значения на бит (пятно). если вы вычислите 2 ^ 32, вы получите 4 294 967 296. поэтому, если вы разделите это число на 2, (потому что половина из них – отрицательные целые числа, а другая половина положительна), тогда вы получаете 2 147 483 648. и это число является самым большим int, которое может быть представлено 32 битами, хотя, если вы обратите внимание, вы заметите, что 2,147,483,648 больше, чем 2,147,483,647 на 1, это потому, что одно из чисел представляет 0, которое находится прямо в середине, к сожалению, 2 ^ 32 не является нечетным числом, поэтому у вас нет только одного числа посередине, поэтому у потенциальных целых чисел есть один меньше шифров, тогда как отрицательные получат полную половину 2,147,483,648.

Вот и все. Это зависит от машины не от языка.

На самом деле это действительно просто понять, вы можете даже вычислить его с помощью калькулятора google: у вас есть 32 бита для int, а компьютеры – двоичные, поэтому вы можете иметь 2 значения на бит (пятно). если вы вычислите 2 ^ 32, вы получите 4 294 967 296.

Давайте будем гением компьютера.