В 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