Спеціалізовані мови програмування
VTFK • 2025
Лекція 1: Огляд системного програмування
Фокус: мислити як комп'ютер
Символічна система для представлення чисел, де кожна позиція має вагу, залежну від основи (radix).
Аналогія: Як різні мови говорять одне й те саме, системи числення говорять однакові числа по-різному
Одне число — три представлення
| Десяткова | Двійкова | Шістнадцяткова |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 2 |
| 8 | 1000 | 8 |
| 15 | 1111 | F |
| 16 | 10000 | 10 |
| 255 | 11111111 | FF |
| 256 | 100000000 | 100 |
Практичні функції
# Десяткова -> Двійкова
print(bin(10)) # 0b1010
print(int('1010', 2)) # 10
# Десяткова -> Шістнадцяткова
print(hex(255)) # 0xff
print(int('FF', 16)) # 255
# Прямі перетворення
print(int('1111', 2)) # 15
print(hex(int('1111', 2))) # 0xf
Алгоритм поділу
Перетвори 13 в двійкову:
13 ÷ 2 = 6 залишок 1
6 ÷ 2 = 3 залишок 0
3 ÷ 2 = 1 залишок 1
1 ÷ 2 = 0 залишок 1
Читаємо залишки знизу вгору: 1101
Перевірка: 1×8 + 1×4 + 0×2 + 1×1 = 13 ✓
Сума ваг
Перетвори 10110 в десяткову:
Позиція: 4 3 2 1 0
Цифра: 1 0 1 1 0
Вага: 16 8 4 2 1
= 1×16 + 0×8 + 1×4 + 1×2 + 0×1
= 16 + 4 + 2
= 22
Шістнадцяткова має цифри 0-9 та А-F (10-15). FF = F×16 + F = 255.
0x означає шістнадцяткову, 0b означає двійкову
// Неправильно
int x = FF; // Помилка: FF не визначено
int y = 11111111; // Це десяткова 11111111, не двійкова
Компілятор має знати систему числення
// Правильно
int x = 0xFF; // 255 в шістнадцятковій
int y = 0b11111111; // 255 в двійковій
int z = 255; // 255 в десятковій
Префікси: 0x = hex, 0b = binary, без = decimal
Далі — архітектура x86-64 та регістри
Лекція 3: Архітектура x86-64
Дякую за увагу! 💾