Переклад чисел із двійкової системи в шістнадцяткову та навпаки

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

Наприклад:

0101101000112 = 0101 1010 0011 = 5A316

27. Константи, змінні, типи даних

Для іменування констант, типів, змінних тощо на мові C використовуються ідентифікатори – неподільні послідовності символів алфавіту. Довжина ідентифікатора може бути довільною, але розрізняються перші 63 символи. Ідентифікатор починається з літери або символу підкреслення і не повинен містити пропусків. Після першого символу допускаються літери, цифри і знак підкреслення. Великі та малі літери, на відміну від попередніх мов, компілятор розрізняє.

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

Цілі константи можуть бути десятковими, вісімковими або шіснадцятьковими. Десяткова константа – послідовність десяткових цифр (від 0 до 9), яка не може починатися з нуля, якщо це не нуль, наприклад: 10, 123, 1056. Вісімкова константа починаеться з символу 0, після якого розміщуються цифри вісімкової системи числення (від 0 до 7), наприклад: 045, 0123; запис константи виду 078 буде сприйматися компілятором як помилка. Шіснадцяткова константа починаеться з символу 0х або 0Х, після яких розміщуються цифри шіснадцятиричної системи числення (від 0 до F), які можна записувати як в верхньому так і нижньому регістрах, наприклад: 0Х45, 0ХFA3.

Дійсні константи складаються з цілої частини, десяткової крапки, дробової частини, символу експоненти (е чи Е) та показника степіня. У записі константи можуть бути опущена ціла або дробова частина (але не обидві разом), десяткова крапка з дробовою частиною чи символ експоненти з показником степеня (але не разом). Наприклад: 2.56, 301е-2,.34е5, 31.Е-7.

Символьні константи – це один або декілька символів, які взяти в апострофи. Послідовність символів, які починаються з символу оберненого слешу (\) називаються керуючими або cscape-послідовностями і мають певні значення (дивись таблицю).

Послідовність символів Шістнадцятковий код Значення
\a   звуковий сигнал
\b   повернення на 1 символ
\f 0C переведення сторінки
\n 0A перехід на новий рядок
\r 0D повернення каретки
\t   горизонтальна табуляція
\v 0B вертикальна табуляція
\\ 5C символ \
\’   символ ‘
\”   символ “
\? 3F символ?
\0   нульовий символ
\0ddd - вісімковий код символу
\0xddd ddd десятковий код символу

Рядкові константи записуються як послідовність символів, що взяті в подвійні лапки. Для формування рядкових констант, що займають декілька рядків тексту програми використовують символ оберненого слешу. Наприклад: „Це рядкова константа! \n”.

Константи описуються зарезервованим словом Const, за яким записується тип та ім’я константи і за допомогою символу = присвоюється значення. Наприклад,

const float g = 9.8;

const maxint = 32767; const float g = 9.8;

У мові C є такі групи стандартних типів даних: скалярні (цілі числа, дійсні числа, символи), агрегатні або структуровані, функції.

Скалярні типи даних:

int Ціле число.

long Довге ціле, може стояти перед означенням типу int, використовує 32 біти пам’яті та дозволяє зберігати числа в діапазоні від -2 147 483 648 до 2 147 483 647.

short Коротке ціле, може стояти перед означенням типу int, використовує 16 біт пам’яті та дозволяє зберігати числа в діапазоні від -32 768 до 32 767.

float Дійсні числа, що належать діапазону від ±3.4*10-38 до ±3.4*1038.

double Подвійної точності дійсне число, що належать діапазону від ±1.7*10-308 до ±1.7*10308.

long double Подвійної точності дійсне число для якого буде використовуватись 80 біт пам’яті і таким чином діапазон таких чисел збільшиться та стане — від ±3.4*10-4932 до ±3.4*104932.

char Символ – літера, цифра або інший символ з множини символів ASCII.

void Відсутність типу, використовується для опису функцій.

28. Класифікація типів. Перетворення типів.

Під час програмування ми повинні знати яким буде наш результат. Також очевидним буде факт, що з речовин потрібних для борщу, зробити макарони буде дещо важко. Відповідно результат буде залежати від частин, які використовувалися при обчисленні. Цей закон працює і для змінних. Не важко здогадатись, що якщо додати дві змінні типу int, результатом буде також тип int. Але яким буде результат, коли змінні різних типів? Про це зараз і піде мова.

Перш за все, потрібно розібратися, які типи можуть взаємодіяти між собою. Для цього у С++ створена ієрархія типів, де всі типи розміщенні по старшинству.

bool -> char -> short-int-unsigned int-long-unsigned long-float-double-long double

Не дивлячись на те, що деякі типи мають однаковий розмір, вони мають різний діапазон значень. Так unsigned int в порівнянні з int може помістити в себе в 2 рази більше додатних значень і тому він старший у ієрархії. Також варто відмітити, що при участі таких типів як: bool, short, char. Вони автоматично перетворюються у int.

Далі піде мова про перетворення типів у виразі (коді програми).

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

int I=27;

short S=2;

float F = 22.3;

bool B = false;

Користуючись цими змінними ми хочемо обчислити I-F+S*B

А ось і питання – У змінну якого типу потрібно записати результат? Відповідь досить проста, але спершу потрібно їх записати у вигляді їхніх типів. int-float+short*bool. Тепер згадаємо, що short та bool автоматично перетворяться у int.

Вираз зміниться на int-float+int*int. Тепер float буде = 0. При множенні двох типів int, результат також буде цього типу. А от int-float буде рівне float. Тут з’явилося нове правило:

Якщо у будь-якому виразі використовуються різні типи даних, то результат буде дорівнювати більшому з типів.

Таким чином результат виразу буде мати тип float.

float rez = I-F+S*B; // 27-22.3+*0

cout << rez << endl; // результат = 4,7

Тепер це все не настільки важливо, щоб визначити тип достатньо знайти найбільший тип який використовується при обчисленні виразу.

Але це не знімає з програміста всієї обережності при роботі з типами змінних.

При діленні цілого числа на ціле, результатом буде також ціле число.

int i=3;

int j=2;

cout << i / j; // = 1. Дробова частина втрачена оскільки обидва типи int

Потрібно вказати, що результат повинен бути типу float. Це робиться так:

int i=3;

int j=2;

cout << (float) i / j; // На екрані 1.5

У мові C є такі групи стандартних типів даних: скалярні (цілі числа, дійсні числа, символи), агрегатні або структуровані, функції.

Скалярні типи даних:

int Ціле число.

long Довге ціле, може стояти перед означенням типу int, використовує 32 біти пам’яті та дозволяє зберігати числа в діапазоні від -2 147 483 648 до 2 147 483 647.

short Коротке ціле, може стояти перед означенням типу int, використовує 16 біт пам’яті та дозволяє зберігати числа в діапазоні від -32 768 до 32 767.

float Дійсні числа, що належать діапазону від ±3.4*10-38 до ±3.4*1038.

double Подвійної точності дійсне число, що належать діапазону від ±1.7*10-308 до ±1.7*10308.

long double Подвійної точності дійсне число для якого буде використовуватись 80 біт пам’яті і таким чином діапазон таких чисел збільшиться та стане — від ±3.4*10-4932 до ±3.4*104932.

char Символ – літера, цифра або інший символ з множини символів ASCII.

void Відсутність типу, використовується для опису функцій.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: