Системи числення

Системи числення

Система числення – це певний спосіб подання чисел і відповідні йому правила дій над числами.

Мінімальний набір знаків, яким позначається число, називається алфавітом. Кількість знаків у алфавіті називається основою системи числення.

Назви систем числення походять від основ, які залежать від того, скільки знаків використовується в записі чисел. У двійковій це тільки 0 і 1, а в десяткового - від 0 до 9. В інших системах крім цифр можуть використовуватися літери, інші значки і навіть ієрогліфи, але практично всі вони вже давно застаріли.

В арабському способі запису числа значення, яке має кожна цифра в числі, залежить не тільки від того, яка це цифра, але й від позиції, яку вона займає в числі.

Система числення, в якій значення кожної цифри в довільному місці послідовності цифр, яка означає запис числа, не змінюється, називається непозиційною. Система числення, в якій значення кожної цифри залежить від місця в послідовності цифр у записі числа, називається позиційною

Римський спосіб запису числа називається непозиційним, а арабський – позиційним.

Розгорнута форма подання чисел в позиційних системах.

Сутність позиційного подання числа відображується в розгорненій формі запису числа. 

531= 500+30+1+0,20+0,6=5*102+3*101+1*100

Вищенаведений вираз називається розгорнутою формою запису числа. Доданки в цьому виразі є добутками значущих цифр числа і степенів основи системи числення, що залежить від позиції цифри в числі - розряду.   

Тут 10 є основою системи числення, а показник степеня – це номер позиції цифри в записі числа (нумерація ведеться зліва на право, починаючи з нуля). Арифметичні операції у цій системі виконують за правилами, запропонованими ще в середньовіччі. Наприклад, додаючи два багатозначних числа, застосовуємо правило додавання стовпчиком. При цьому все зводиться до додавання однозначних чисел, для яких необхідним є знання таблиці додавання.

Переведення цілого числа з десяткової системи числення у будь-яку іншу

Переведення цілого числа з десяткової системи числення у будь-яку іншу здійснюється шляхом послідовного ділення числа на основу нової системи числення. Ділення виконується до тих пір, поки остання частка не стане менше дільника. Отримані остачі від ділення, взяті у зворотному порядку, будуть значеннями розрядів числа в новій системі числення. Остання частка дає старшу цифру числа.

Для переведення правильного дробу з десяткової системи числення у будь-яку іншу 

Для переведення правильного дробу з десяткової системи числення у будь-яку іншу потрібно помножити заданий дріб на основу нової системи числення. Отримана ціла частина добутку буде першою цифрою після коми дробу в новій системі числення. Далі по черзі множаться дробові частини добутків на основу нової системи. Отримані цілі частини добутків будуть цифрами дробу у новій системі числення. Цей процес продовжують до тих пір, поки не буде знайдено число із заданою точністю.

Для переведення змішаного числа з десяткової системи числення в іншу необхідну окремо перевести цілу й дробову частини за вказаними правилами, а потім об'єднати результати у змішане число.

Переведення чисел із будь-якої системи числення в десяткову

Для переведення чисел із будь-якої системи числення в десяткову необхідно це число представити у розгорнутій формі запису числа і виконати арифметичні дії в десятковій системі числення.

Приклад:

2178=2*1082+1*1081+7*1080=2*82+1*81+7*80=2*64+1*8+7*1=128+8+7=14310

110002=1*24+1*23+0*22+0*21+0*20=1*16+1*8+0*4+0*2+0*1=2410

Приклад 1

Дано число у десятковій системі числення. Переведіть задане число з десяткової системи числення у двійкову

a=int(input())             # вводимо число

c=[]                             # створюємо порожній список для запису цифр числа у двійковій системі числення

while a!=0:                # поки дане число ще можна ділити

       b=a%2                       # знаходимо остачу

       c.append(b)              # записуємо остачу в список

       a=a//2                        # знаходимо частку від ділення

c=c[::-1]                      # перепишемо у списку цифри числа у зворотньому порядку

print(*c,sep='')          # виведемо елементи списку без квадратних дужок  і без пробілів

Приклад 2

Дано число у двійковій системі числення. Переведіть задане число з двійкової системи числення у десяткову

a=input()                                  # зчитуємо число як рядок

n=0                                            # вводимо змінну для формування числа

for i in range (len(a)-1,-1,-1):       # у циклі від довжини числа меншого на одиницю до 0 у зворотньому порядку

    b=int(a[i])*2**i                    #  множимо цифру на степінь двійки

    n+=b                                      # та додаємо 

print(n)                                     # виводимо шукане число

Завдання для самостійного розв'язання

Виконайте завдання 1039 - 1043 з сайту обласного факультативу 

http://dn.hoippo.km.ua:8889/problems/ 

А також тут:

https://www.e-olymp.com/uk/problems?tag=49 

функції

Для переведення чисел з десяткової системи числення у двійкову, вісімкову та шістнадцяткову у Python існують функції hex(), oct(), bin(). 

Щоб перетворити числовий вигляд літералу в рядок використовуються такі функції:

Щоб перетворити рядок в ціле число з врахуванням системи числення використовується функція

int(s, base)

де

Приклади функцій перетворення.

sh = hex(15) # sa = 0xF

so = oct(15) # sb = 0o17

sb = bin(15) # sb = 0b1111


i = int('15',10) # i = 15

i = int('15',8) # i = 13

# i = int('19',8) - помилка, цифра 9 не може бути у 8-й системі числення


i = int('2EF',16) # i = 751

i = int('20',16) # i = 32

i = int('14',5) # i = 9