DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

ПЕРЕВЕДЕННЯ ЧИСЕЛ В ПОЗИЦІЙНІ СИСТЕМИ ЧИСЛЕННЯ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
РТ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2017
Тип роботи:
Лабораторна робота
Предмет:
Інформаційні технології

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет "Львівська політехніка"  Лабораторна робота №11 ПЕРЕВЕДЕННЯ ЧИСЕЛ В ПОЗИЦІЙНІ СИСТЕМИ ЧИСЛЕННЯ Мета роботи: засвоєння поняття позиційної системи числення, методи переходу з однієї системи числення в іншу, набуття навиків програмування операцій переходу, закріплення навиків застосування циклів та символьних змінних. Завдання 1 ПЕРЕВЕДЕННЯ ЧИСЕЛ В ПОЗИЦІЙНІ СИСТЕМИ ЧИСЛЕННЯ Перевести натуральні десяткові числа в їх двійкові еквіваленти методом ділення та методом маскування. Кожен з методів реалізувати у вигляді функції. Користувач повинен мати можливість вибору методу переведення. Результат повинен бути одержаний у вигляді послідовності символів і збережений у символьній змінній. Вивід результатів здійснювати на екран та у текстовий файл. Аналіз завдання: для переведення чисел з десяткової у двійкову систему числення треба використати алгоритми «ділення» та «маскування». Для першого алгоритму достатньо ділити число на 2, та записувати остачу. Для економії пам’яті вивід числа в 10-й системі числення буде змінною. Для того ми повинні додати до остачі принаймні двійку (для того, що б не було нулів та одиниць, адже система може проігнорувати нулі та операції з ними не будуть дотупні). Тому додамо до значення остачі 2, тоді замість 0 чи 1 отримаємо 2 чи 3. В кінцевому результаті просто віднімемо 2. Алгоритм програми: Головна функція  Ділення  Маскування  Текст програми: #include <stdio.h> #include <stdlib.h> void perevid_dilenna(int x,int buff,int bit) { while(0 != x) { printf("%d\t%d\n",x/2,x%2); if(x%2) buff++; x/=2; if(x!=0) buff *= 10; } while(buff!=0){ bit *=10; bit += (buff%10); buff /=10; } bit -=2; printf("%d\n",bit); puts(""); FILE *file; file = fopen("info.txt", "w"); fprintf(file,"Chuslo v dviykoviy sustemi chuslenna - %d", bit); fclose(file); } void perevid_maskuvanna(int x,int mask,int i,float bit) { while (mask<=x){ mask = pow(2,i); printf("%d\t%d\n",i,mask); if(i==29) break; i++; } if(mask>2) mask = mask >> 1; while(mask!=0){ if(x&mask) bit++; if(mask!=1)bit *= 10; mask = mask >> 1; } printf("%f",bit); FILE *file; file = fopen("info.txt", "w"); fprintf(file,"Chuslo v dviykoviy sustemi chuslenna - %f", bit); fclose(file); } int main(int argc, char *argv[]) { char answ; puts("Dla perevedenna metodom dilenna najmit 'd' , Dla perevedenna metodom maskuvanna najmit 'm' "); printf("Metod -> "); scanf("%c", &answ); int x; switch(answ) { case 'd': { printf("Vvedit chuslo"); puts(""); scanf("%d", &x); perevid_dilenna(x,2,0); break; } case 'm': { printf("Vvedit chuslo"); puts(""); scanf("%d", &x); perevid_maskuvanna(x,0,0,0); break; } } system("PAUSE"); return 0; } Результати:   Завдання 2 : ПОБІТОВІ ЛОГІЧНІ ОПЕРАЦІЇ Програмa повинна виконувати: 1. зчитування з клавіатури рядок iз  8-и символів (0 та 1); 2. перетворювання задану комбінацію у змінну цілого типу, яка займає в пам'яті 1 байт; 3. інвертування і-х та j-х бітів; 4. інвертування всіх 8-х бітів; 5. встановлення a-го біта в 1 ; 6. встановлення всіх бітів в 1; Результати виконання кожного кроку виводити на екран у вигляді 16-кової цілої та двійкового коду. Для отримання двійкового коду числа використати функцію, яка реалізовує метод маскування з попередньої задачі. Індивідуальне завдання: Рядок символів a i j  00011011 2 7 8   Алгоритм програми:  Код програми: #include <stdio.h> #include <stdlib.h> #include <math.h> #define A 1 #define I 6 #define J 7 int Masking(int x); unsigned char Convert(int bit_v); int main(int argc, char *argv[]) { unsigned char byte; int bin_v; scanf("%d", &bin_v); byte=Convert(bin_v); printf("%d\t%X\n",byte,byte); byte ^= (int) (pow(2,I)); //інвертування I-го біта printf("%d\t%X\n",perevid_maskuvanna(byte),byte); byte ^= (int) (pow(2,J)); //інвертування J-го біта printf("%d\t%X\n",perevid_maskuvanna(byte),byte); byte = ~byte; //інвертування всього коду printf("%d\t%X\n",perevid_maskuvanna(byte),byte); byte |= (int) (pow(2,A)); // А-й біт в 1 printf("%d\t%X\n",perevid_maskuvanna(byte),byte); byte |= 0xFF; // Всі біти в 1 (0xFF - 256 в 16-й системі числення printf("%d\t%X\n",perevid_maskuvanna(byte),byte); system("pause"); return 0; } int perevid_maskuvanna(int x) { int mask=0,i=0; int bit=0; while (mask<=x){ mask = (int) pow(2,i); if(i==29) break; i++; } if(mask>2) mask = mask >> 1; while(mask!=0){ if(x&mask) bit++; if(mask!=1)bit *= 10; mask = mask >> 1; } return bit; } unsigned char Convert(int bit_v){ int i=0; unsigned char x=0; while(bit_v!=0){ if(bit_v%10) x |= (int) pow(2,i); bit_v /=10; i++; } return x; } Результати:  Висновок: на цій лабораторній роботі я навчився переводити числа з десяткової у двійкову систему числення різними методами : маскуванням та діленням. Я написав програму, яка використовує ці алгоритми переводу чисел та автоматично їх переводить. Також я навчився програмно виконувати побітові логічні операції.
Антиботан аватар за замовчуванням

20.04.2017 17:27

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!