W C , sam język nie określa reprezentację pewnych typów danych. Może różnić się w zależności od maszyny, w systemach wbudowanych int
może mieć 16 bitów szerokości, choć zwykle jest to 32 bity.
Jedynym wymaganiem jest short int
<= int
<= long int
według wielkości. Istnieje również zalecenie, które int
powinno reprezentować natywną pojemność procesora .
Wszystkie typy są podpisane. unsigned
Modyfikator pozwala używać najwyższy bit jako część wartości (w przeciwnym razie jest ona zarezerwowana dla bitem znaku).
Oto krótka tabela możliwych wartości dla możliwych typów danych:
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
W Javie , języka Java Specyfikacja określa reprezentację typów danych.
Kolejność jest następująca: byte
8 bitów, short
16 bitów, int
32 bity, long
64 bity. Wszystkie te typy są podpisane , nie ma niepodpisanych wersji. Jednak manipulowanie bitami traktuje liczby tak, jak były niepodpisane (to znaczy, że poprawnie obsługuje wszystkie bity).
Typ danych znaków char
ma szerokość 16 bitów, jest bez znaku i zawiera znaki przy użyciu kodowania UTF-16 (można jednak przypisać char
dowolną 16-bitową liczbę całkowitą bez znaku, która reprezentuje nieprawidłowy znak kodowy)
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