Я думаю, что когда вы определяете String
, вы определяете объект. Поэтому вам нужно использовать .equals()
. Когда вы используете примитивные типы данных, вы используете ==
, но с String
(и любым объектом) вы должны использовать .equals()
.
В диапазоне 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 type - это 32-разрядное целое число дополнений, подписанное двумя. Он имеет минимальное значение -2,147,483,648 и максимальное значение 2,147,483,647 (включительно).
Фактически размер битов int
, short
, long
зависит от реализации компилятора.
Например. на моем 64-битном Ubuntu у меня есть short
в 32
битах, когда на другой 32-битной версии Ubuntu это бит 16
.
На самом деле очень просто понять, вы можете даже вычислить его с помощью калькулятора google: у вас есть 32 бита для int, а компьютеры - двоичные, поэтому вы можете иметь 2 значения на бит (пятно). если вы вычислите 2 ^ 32, вы получите 4 294 967 296.
Это потому, что в C-integer на 32-битной машине не означает, что для его хранения используются 32 бита, это может быть и 16 бит. Это зависит от машины (зависит от реализации).
int
. Но limits.h
помогает выяснить, что такое истина
– junix
21 February 2013 в 16:48
Плакат имеет смешанные типы java. в java, его C in является коротким: короткий (16 бит) = -32768 до 32767 int (32 бит) = -2,147,483,648 до 2,147,483,647
http://docs.oracle.com/ JavaSE / учебник / Java / nutsandbolts / datatypes.html
в стандарте 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.
И это все. Это зависит от машины не от языка.
В C сам язык не определяет представление некоторых типов данных. Он может варьироваться от машины к машине, на встроенных системах int
может быть 16 бит в ширину, хотя обычно это 32 бит.
Единственное требование состоит в том, что short int
& lt; = int
& lt; = 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 бит, unsigned и содержит символы, использующие кодировку 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
int
s ...
– gaborsch
27 June 2014 в 08:35
int foo = Integer.MAX_VALUE + 1; System.out.println(Integer.toUnsignedLong(foo));
печатает 2147483648
и char - неподписанный тип
– howlger
7 October 2017 в 09:38
Integer.MAX_VALUE + 1
является 0x80000000
в шестнадцатеричном виде из-за переполнения (и равно Integer.MIN_VALUE
). Если вы преобразуете его в unsigned (long), бит знака будет обрабатываться как бит значения, поэтому он будет 2147483648
. Благодарим вас за примечание char
. char
без знака, вы правы, но char не используется для расчетов, поэтому я оставил его из списка.
– gaborsch
8 October 2017 в 17:59
32-битное целое число от -2,147,483,648 до 2,147,483,647. Однако тот факт, что вы находитесь на 32-битной машине, не означает, что ваш компилятор C
использует 32-разрядные целые числа.
int
имеет «естественную ширину машины», который я бы интерпретировал как 32 бита при компиляции для 32-битных машин.
– junix
21 February 2013 в 16:52
Определение языка C задает диапазоны minimum для разных типов данных. Для int
этот минимальный диапазон составляет от -32767 до 32767, то есть int
должен быть не менее 16 бит в ширину. Реализация может обеспечить более широкий тип int
с более широким диапазоном. Например, на сервере разработки SLES 10 я работаю, диапазон от -2147483647 до 2137483647.
Есть еще некоторые системы, которые используют 16-битные типы int
(All The World Is Not VAX x86), но есть много, которые используют 32-битные int
типы, и, возможно, некоторые из них используют 64-разрядные.
Язык C был разработан для работы на разных архитектурах. Java была разработана для работы на виртуальной машине, которая скрывает эти архитектурные отличия.
INT_MIN
указан как -32767
. Не принимайте двух дополнений.
– John Bode
24 May 2015 в 18:39
Строгим эквивалентом java int
является long int
в C.
Редактирование: если определено int32_t
, то это эквивалентно с точки зрения точности. long int
гарантируют точность java int
, потому что это гарантия быть размером не менее 32 бит.
int32_t
, если он определен вашим компилятором
– UmNyobe
21 February 2013 в 16:58
В C целое число (для 32-разрядной машины) равно 32 бит и оно варьируется от -32768 до +32767.
blockquote>Неверно. 32-разрядное целое число со знаком в представлении комплемента 2 имеет диапазон от -231 до 231-1, который равен -2147,483,648 до 2,147,483,647.
**
даже не C, и на мой взгляд это не очень понятно. :)
– unwind
21 February 2013 в 17:00
^
, так как обычно xor
– Kos
21 February 2013 в 17:01