Системи числення
Системи числення
Система числення – це певний спосіб подання чисел і відповідні йому правила дій над числами.
Мінімальний набір знаків, яким позначається число, називається алфавітом. Кількість знаків у алфавіті називається основою системи числення.
Назви систем числення походять від основ, які залежать від того, скільки знаків використовується в записі чисел. У двійковій це тільки 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/
А також тут:
функції
Для переведення чисел з десяткової системи числення у двійкову, вісімкову та шістнадцяткову у Python існують функції hex(), oct(), bin().
Щоб перетворити числовий вигляд літералу в рядок використовуються такі функції:
hex(num) – перетворює число num в рядок, який зображує це число у шіснадцятковій системі числення;
oct(num) – перетворює число num в рядок, що представляє це число у вісімковій системі числення;
bin(num) – перетворює число num в рядок, що представляє це число у двійковій системі числення.
Щоб перетворити рядок в ціле число з врахуванням системи числення використовується функція
int(s, base)
де
s – рядок, який потрібно перетворити;
base – ціле число, що визначає кількість цифр у системі числення. Наприклад, для системи числення 7 значення base = 7.
Приклади функцій перетворення.
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