Data is the fundamental element of programming.
Computer operations work on data.
For a computer system to operate on data, a representation of the data is required.
The decimal representation is known as base ten.
Number are represented with digits from 0 to 9.
A decimal number is the sum of the powers of 10 which each digit represents.
The binary representation is known as base two.
It is the fundamental representation of computer data, as electronic components send regular pulses that are either on (1) or off (0).
Each digit is referred to as a bit.
A binary number is the sum of the powers of 2 which each digit represents.
The hexadecimal representation is known as base 16.
Number are represented with digits from 0 to 9 and letters from A to F that represents values from 10 to 15.
The hexadecimal representation is also fundamental in computers, as data is generally packed into bytes which are a set of 8 bits.
The FF hexadecimal number is the largest value that can be stored in a byte, which is equal to 255 as a decimal number.
Integers are known as natural numbers in mathematics.
Integer numbers are generally represented with the following sizes:
- Byte (8 bits)
- Short (16 bits)
- Int (32 bits)
- Long (64 bits)
Integers can be positive or negative.
Positive integers and negative integers are represented by distinct types, because their encoding is different.
Negative integers use the two complement notation.
If the most significant bit is set, the number is negative.
To represent fractions, a different notation is used to express the concept of a decimal point.
In the fixed point notation, a number of bits represent the whole part of the number, and the remaining bits represent the decimal part.
The fixed point notation constrains the range of whole numbers that can be represented and the amount of precision for the decimal part.
In the floating point notation, the position of the decimal point is determined by an exponent.
A floating point number has three parts:
- A mantissa that contains the digits on both side of the decimal point.
- An exponent that indicates the position of the decimal point.
- A sign bit that indicates whether the number is positive or negative.
Floating point numbers are generally represented as:
- Single-precision (32 bits)
- Double-precision (64 bits)
The most common standard to represent floating point numbers is IEEE-754.
For a single-precision number:
- The sign is in the most significant bit.
- The exponent is stored on 8 bits.
- The mantissa is stored on 24 bits.
The precision of a floating-point value is proportional to its magnitude.
It means that the precision of a floating point number increases as the magnitude decrease, and the precision decreases as the magnitude increase.
The epsilon (or machine epsilon) is the relative error (independent of the exponent).
It indicates the maximum error in the mantissa after a given operation.
It is the minimum distance that is recognized between two floating point numbers.
It satisfies the following equation:
A word corresponds to the natural size of a processor.
- A 32-bit processor has a word size of 4 bytes.
- A 64-bit processor has a word size of 8 bytes.