Most prevalent computer languages only offer two kinds of numbers,floating-point and integer fixed-point.
On present-day computers, all numbers are encoded using binary digits (called “bits”) which are either 1 or 0.4.7 In C, C++, and Java, floating-point variables are declared as float (32 bits) or double (64 bits), while integer fixed-point variables are declared as short int(typically 16 bits and never less), long int (typically 32 bits and never less), or simply int (typically the same as a long int, but sometimes between short and long). For an 8-bit integer, one can use the char datatype (8 bits).
Since C was designed to accommodate a wide range of hardware, including old mini-computers, some lattitude was historically allowed in the choice of these bit-lengths. The sizeof operator is officially the “right way” for a C program to determine the number of bytes in various data types at run-time, e.g. sizeof(long). (The word int can be omitted after short or long.) Nowadays, however, shorts are always 16 bits (at least on all the major platforms), ints are 32 bits, and longs are typically 32 bits on 32-bit computers and 64 bits on 64-bit computers (although some C/C++ compilers use long long int to declare 64-bit ints). Table 4.2 gives the lengths currently used by GNUC/C++ compilers (usually called “gcc” or “cc”) on 64-bit processors.4.8
Java, which is designed to be platform independent, defines a long int as equivalent in precision to 64 bits, an intas 32 bits, a short int as 16 bits, and additionally a byte int as an 8-bit int. Similarly, the “Structured Audio Orchestra Language” (SAOL) (pronounced “sail”)–the sound-synthesis component of the newMPEG-4audio compression standard–requires only that the underlying number system be at least as accurate as 32-bit floats. All ints discussed thus far are signed integer formats. C and C++ also support unsigned versions of all int types, and they range from to instead of to , where is the number of bits. Finally, an unsigned char is often used for integers that only range between 0 and 255.
- One’s Complement Fixed-Point Format
- Two’s Complement Fixed-Point Format
- General Formula for Two’s-Complement, Integer Fixed-Point Numbers
- “Little Endian” Formula for Two’s-Complement, Integer Fixed-Point Numbers