Таким чином, трійковим поданням 0.75 буде нескінченний періодичний дріб (0.(20))3.
Маючи дійсне значення V, V<1, можна одержати r перших цифр його P-кового подання, виконавши алгоритм
for i := 1 to r do
begin
V := V*P;
d:= trunc ( V ) ;
за значенням d побудувати P-кову цифру;
V := V - trunc ( V )
end.
1.3. "1+1=10, 5? 8=28"
Якщо додати 1 і 1, то одержимо 2. Але в двійковій системі це 10, тобто в двійковій системі 1+1=10. При додаванні в стовпчик це означає суму 0 і перенос 1 у наступний розряд. Наприклад, додамо в стовпчик 3 і 6 у двійковій системі:
+ 11
110
1001
У десятковій системі 10+13=23. Те ж саме в шістнадцятковій виглядає як A+D=17. Взагалі, додаючи дві або більше P-кові цифри, у результаті одержуємо
(їх сума) mod P
із переносом (їх сума) div P. Наприклад, у шістнадцятковій системі
+ 9D
FAE
104B
(неважко перевірити, що при додаванні в стовпчик D+E=1B, 1+9+A=14, 1+F=10).
Усі вчаться в школі не тільки додавати, але й множити. Коли ми множимо число в десятковій системі у стовпчик на число, записане одною цифрою X, то обчислюємо добуток чергової цифри числа та X. Остачу від ділення цього добутку на 10 додаємо до переносу від попереднього розряду й одержуємо суму S. Молодшу цифру S, тобто остачу від ділення на 10, записуємо в результат, а старшу, тобто S div 10, запам'ятовуємо як перенос. І так рухаємося від молодшої цифри співмножника до старшої. Знайомо, чи не так?
У P-ковій системі відбувається те ж саме, тільки остачі беруться від ділення не на 10, а на P. Наприклад, у шістнадцятковій системі 5? 8 при діленні на 16 дає остачу 8 і частку 2, тобто 5? 8=28. У вісімковій системі
? 1234
7
11102
(4? 7 при діленні на 8 дає 2 в остачі й 3 у переносі, 3? 7+3 дає 0 і 3 тощо).
Множення на число, у якого більше однієї цифри, зводиться до множень на окремі цифри, запису результатів із зсувом та додавання у стовпчик. Наприклад, у вісімковій системі
? 77
123
275
176
77 .
12155
Аналогічно в шістнадцятковій системі
? FE
20A
9EC
1FC .
205EC
Задачі
1. За заданими P та P-ковими записами чисел N указати їх десяткове подання:
а) P = 16, N = F1, FF, FFFE;
б) P = 8, N = 377, 1200;
в) P = 2, N = 1000, 1111, 11111111, 100000000.
г) P=36, N=ZY, 100 (36-кові цифри A, B, ? , Y, Z позначають десятковi числа 10, 11, ? , 34, 35 відповідно).
2. За десятковим записом чисел 32, 48, 100, 255, 640, 1024, 32767 указати їх 2-, 8-, 16-кові подання.
3. * Записати P-кове подання десяткових дробів d, де
а) d = 0.5, P = 2, 3, 5, 8, 16, 20;
б) d = 0.1, P = 2, 3, 5, 8, 16, 20.
4. * За основами P та P-ковими записами дробів указати їх десяткове подання:
а) P = 2; 0. 0001; 0. 1111; 0. 11111111;
б) P = 3; 0. 001; 0.22; 0.11;
в) P = 16; 0.1; 0. FF; 0.8; 0. (7).
5. Написати процедуру друкування цифр P-кового запису числа N, де 1 < P < 37,
а) N типу integer (цифри друкуються у зворотному порядку);
б) N типу integer (цифри друкуються у прямому порядку);
в) N має тип real, N<1 (друкується не більше, ніж R цифр дробової частини, де 0<R<80).
Уважати, що за P=36 числа від 10 до 35 позначено відповідно літерами від A до Z.
6. Означити таблиці додавання та множення однорозрядних P-кових чисел при P=2, 4, 8, 16. Написати програму друкування таких таблиць за P від 2 до 20.
7. Написати програму друкування таблиці символів, їх двійкових, шістнадцяткових та десяткових номерів.
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 та