This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:multiasm:cs:chapter_3_11 [2025/01/08 19:39] – ktokarz | en:multiasm:cs:chapter_3_11 [2026/01/10 20:18] (current) – pczekalski | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Fundamentals of Data Encoding, Big Endian, Little Endian ====== | ====== Fundamentals of Data Encoding, Big Endian, Little Endian ====== | ||
| - | The processor can work with different types of data. These include integers of different sizes, floating point numbers, | + | The processor can work with different types of data. These include integers of different sizes, floating-point numbers, |
| ===== Integers ===== | ===== Integers ===== | ||
| - | Integer data types can be 8, 16, 32 or 64 bits long. If the encoded number is unsigned it is stored in binary representation, | + | Integer data types can be 8, 16, 32 or 64 bits long. If the encoded number is unsigned, it is stored in binary representation, |
| + | |||
| + | In two's complement representation, | ||
| <table binarynumbers> | <table binarynumbers> | ||
| < | < | ||
| Line 18: | Line 20: | ||
| ===== Floating point ===== | ===== Floating point ===== | ||
| - | Integer calculations do not always cover all mathematical requirements of the algorithm. To represent real numbers the floating point encoding is used. A floating point is the representation of the value //A// which is composed of two numbers | + | Integer calculations do not always cover all mathematical requirements of the algorithm. To represent real numbers, the floating-point encoding is used. A floating point is the representation of the value //A//, which is composed of three fields: |
| - | * Mantissa | + | * Sign bit |
| - | * Exponent | + | * Exponent |
| + | * Mantissa | ||
| fulfilling the equation | fulfilling the equation | ||
| {{ : | {{ : | ||
| - | There are two main types of real numbers, called floating point values. Single precision is the number which is encoded in 32 bits. Double | + | There are two main types of real numbers, called floating-point values. Single precision is a number which is encoded in 32 bits. A double-precision floating-point number is encoded with 64 bits. They are presented in Fig{{ref> |
| <figure realtypes> | <figure realtypes> | ||
| - | {{ : | + | {{ : |
| - | < | + | < |
| </ | </ | ||
| + | |||
| + | The Table{{ref> | ||
| <table realnumbers> | <table realnumbers> | ||
| < | < | ||
| - | ^ Precision | + | ^ Precision |
| - | | Single (32 bit) | 8 bits | 23 bits | + | | Single (32 bit) | 8 bits | 23 bits |
| - | | Double (64 bit) | 11 bits | 52 bits | + | | Double (64 bit) | 11 bits | 52 bits |
| </ | </ | ||
| + | |||
| + | The most common representation for real numbers on computers is standardised in the document IEEE Standard 754. Two features have been implemented to make the calculations easier for computers: | ||
| + | * the Biased exponent, | ||
| + | * the Normalised Mantissa. | ||
| + | A biased exponent means that the bias value is added to the real exponent value. This results in all positive exponents, which makes it easier to compare numbers. | ||
| + | The normalised mantissa is adjusted to have only one bit of the value " | ||
| + | |||
| + | |||
| ===== Texts ===== | ===== Texts ===== | ||
| - | Texts are represented as a series of characters. In modern operating systems, texts are encoded using two-byte Unicode which is capable of encoding not only 26 basic letters but also language-specific characters of many different languages. In simpler computers like in embedded systems, 8-bit ASCII codes are often used. Every byte of the text representation in the memory contains a single ASCII code of the character. It is quite common in assembler programs to use the zero value (NULL) as the end character of the string, similar to the C/C++ null-terminated string convention. | + | Texts are represented as a series of characters. In modern operating systems, texts are encoded using two-byte Unicode, which is capable of encoding not only 26 basic letters but also language-specific characters of many different languages. In simpler computers, like in embedded systems, 8-bit ASCII codes are often used. Every byte of the text representation in the memory contains a single ASCII code of the character. It is quite common in assembler programs to use the zero value (NULL) as the end character of the string, similar to the C/C++ null-terminated string convention. |
| ===== Endianness ===== | ===== Endianness ===== | ||
| - | Data encoded in memory must be compatible with the processor. Memory chips are usually organised as a sequence of bytes, which means that every byte can be individually addressed. For processors of the class higher than 8-bit, there appears | + | Data encoded in memory must be compatible with the processor. Memory chips are usually organised as a sequence of bytes, which means that every byte can be individually addressed. For processors of the class higher than 8-bit, there appears |
| - Little Endian - low-order byte is stored at a lower address in the memory. | - Little Endian - low-order byte is stored at a lower address in the memory. | ||
| - | - Big Endian - high-order byte is stored at a lower address in the memory. | + | - Big Endian - the high-order byte is stored at a lower address in the memory. |
| These two methods for a 32-bit class processor are shown in Fig{{ref> | These two methods for a 32-bit class processor are shown in Fig{{ref> | ||