Integral data types include all whole numbers, that is numbers not having any fractional component.
The bits of integral types are interpreted as simple powers of two:
The right-most bit, known as the least significant bit, represents the number of 1s. ( 2^0 )
The next bit represents the number of 2s. ( 2^1 )
The next bit represents the number of 4s. ( 2^2 )
The next bit represents the number of 8s. ( 2^3 )
In general the nth bit from the right represents 2^(n-1)
For unsigned integral types, the leftmost bit, known as the most significant bit, represents 2^(N-1), where N is the total number of bits in the data item.
The range of possible values for an unsigned integer of N bits is from 0 to 2^N - 1. ( All 0s to all 1s )
So for example, a 4-bit unsigned integer could range from 0 to 15, and an 8-bit unsigned integer could range from 0 to 255.
For signed integral types, the leftmost bit can be thought of as representing a negative 2^(N-1).
( The real interpretation in the computer is more complicated, but if you think of it this way you will get the right answers. )
The most negative value would be the first bit a 1 and all other bits 0s, yielding negative 2^(N-1).
The most positive value would be the first bit a 0 and all other bits 1s, yielding 2^(N-1) - 1.
So for example, a 4-bit signed integer could range from -8 to +7, and an 8-bit signed integer could range from -128 to +127.
A signed integral type having all bits 1 is equal to -1, regardless of how many bits are in the number.
Signed and unsigned integers with the same number of total bits have the same number of different possible values.
Unsigned integers use one bit pattern ( all 0s ) to represent zero and all others to represent positive values.
Signed integers use half of the possible bit patterns to represent negative numbers, one pattern to represent zero, and half minus 1 to represent positive values.
Specific details of the integer types available on a particular implementation, along with the number of bits allocated to each one and their minimum and maximum allowable values can be found in the file limits.h
int
The most basic and commonly used integral type is "int".
The int data type is always the "best" size for the particular computer it is running on, typically 32 bits
Format specifiers for ints are either %d or %i, for either printf or scanf.
long int
A long int typically uses twice as many bits as a regular int, allowing it to hold much larger numbers.
( The C standard only specifies that a long cannot use a fewer number of bits than a regular int )
printf and scanf replace %d or %i with %ld or %li to indicate the use of a long int.
long int may also be specified as just long.
long long int
C99 introduces the long long int, typically having twice as many bits as a long int and printed/scanned using %lld or %lli format specifiers
short int
A short int may use fewer bits than a regular int, thereby saving