Сторінка
2
2. Внутрішнє подання даних стандартних типів 2.1. Біт, байт та інші У комп'ютері числа зберiгаються та обробляються в двiйковiй системі числення. Двійкова цифра 0 або 1 відображається станом елемента пам'яті, який вважається неподільним і називається бiтом. Послідовність із 8 бітів називається байтом. Байт своїми станами відображає 28=256 комбінацій із 0 та 1, а саме: 00000000 00000001 ¼ 11111110 11111111 Множині цих комбінацій можна взаємно однозначно поставити у відповідність деякі множини значень: цілі числа від -128 до 127, або числа від 0 до 255, або пари 16-кових цифр, або символи від chr(0) до chr(255) чи якісь інші множини з 256 елементів. У двох сусідніх байтах подаються 28× 28=65536 комбінацій із 0 та 1. Їм взаємно однозначно ставляться у відповідність цілі числа від 0 до 65535, або числа від -32768 до 32767 чи інші множини з 65536 елементів. Аналогічно чотири сусідні байти відображають (28)4=4294967296 комбінацій із 0 та 1, яким зiставляються числа від 0 до 4294967295, або числа від -2147483648 до 2147483647 чи інші множини з 4294967296 елементів. Два байти утворюють одиницю пам'яті, яка називається словом. Іноді таке слово називається напівсловом, а словом – послідовність із чотирьох байтів. Послідовність із 1024 байтів утворює одиницю виміру розмірів пам'яті комп'ютера. Цю одиницю позначають Kбайт, проте це "K" – латинська літера, що читається "кей" і позначає не тисячу, а 1024. Послідовність із 1K Kбайтів, тобто 1048576 байтів, називається Mбайтом. Ці дві одиниці у світі програмістів і користувачів часто не зовсім точно називають відповідно "кілобайт" і "мегабайт", хоча це зовсім не тисяча і не мільйон байтів. До речі, 1Гбайт, хоча й читається "гігабайт", позначає не мільярд, а 1073741824 байти. 2.2. Подання цілих чисел, символів та бульових значень Бульовi значення false та true подаються, як правило, в одному байтi комбінаціями відповідно 00000000 та 00000001. Символи від chr(0) до chr(255) зображаються в одному байтi комбінаціями з нулів та одиниць відповідно від 00000000 до 11111111. Наприклад, символ chr(32), або ' ' (пропуск), зображається як 00100000, символ chr(48), або '0', – як 00110000 тощо. Цілі числа подаються в комп'ютері, головним чином, у двох формах – беззнаковій та знаковій. Далі ми будемо ототожнювати числа з їх поданням, усвідомлюючи, що з точки зору математики це не може бути правильним.
7 … 0 | … | 7 … 0 | 7 … 0 |
8N-1 … | 15 … 8 | 7 … 0 |
x8N-1× 28N-1+¼ x1× 2+x0. Наприклад, комбінація 00¼ 00 задає число 0, комбінація 00¼ 01 – "один", 00¼ 10 – "два", 11¼ 11 – число 28N-1.
Таблиця 11.1 | |
число |
код |
28N-1 - 1 |
01¼ 11 |
28N-1 - 2 |
01¼ 10 |
¼ |
¼ |
1 |
00¼ 01 |
0 |
00¼ 00 |
-1 |
11¼ 11 |
-2 |
11¼ 10 |
¼ |
¼ |
-28N-1 + 1 |
10¼ 01 |
-28N-1 |
10¼ 00 |
1) за прямим кодом числа |A| заміною всіх 0 на 1 та всіх 1 на 0 будується обернений код R(A);
2) за R(A) як беззнаковим цілим числом обчислюється D(A)=R(A)+1. Очевидно, що D(A)=R(|A|-1). Наприклад, побудуємо двобайтовий додатковий код числа –144. Прямим двобайтовим кодом числа 144 буде
0000'0000'1001'0000 (апострофи записано для наочності), оберненим – 1111'1111'0110'1111. До нього додається 1: 1111'1111'0110'1111
1
1111'1111'0111'0000, і ми одержуємо додатковий код числа -144. Він є також оберненим кодом числа -143. За додатковим кодом від'ємне число "відновлюється" у зворотному порядку:
1) D(A) вважається беззнаковим цілим; обчислюється R(A)=D(A)-1;
2) код, обернений до R(A), є прямим кодом числа | A |. Той самий результат можна дістати, якщо
1) побудувати код R(D(A)), обернений до D(A);
2) до R(D(A)) як до беззнакового додати 1. Відповідність знакових цілих чисел та їх кодів наведено в табл. 11.1. Як бачимо, від'ємних чисел на одне більше, ніж додатних. Елемент X довільного типу-переліку подається як беззнакове цiле число ord(X). 2.3. Принципи подання дійсних чисел Дiйснi числа в більшості комп'ютерів подаються в N=4, 6, 8 або 10 байтах, поділених на поля (послідовності бітів):