Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Программа перевода числа из 16-ой системы счисления в 2-ую.
Для перевода 16-го числа в двоичное преобразуем каждую 16-ю цифру в десятичное число, которое в свою очередь переведем в четверку 2-х цифр. Поскольку при переводе мы получаем цифры в обратном порядке, перевернем все 16-е число, переведем каждую цифру, затем перевернем всю 2-ю строку (например: b6 -> 6b -> 0110 1101 -> 1011 0110) В этом примере будем считывать 16-е число посимвольно с проверкой каждого символа.
#include<iostream> #include<iomanip> #include<math.h> #include<conio.h> #include<String.h> #include<ctype.h> #include<windows.h> using namespace std;
int main() { if(SetConsoleCP(1251)==0) { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) { cerr<<"Failed to set OUTPUT page!"<<endl; } char ch; int n, k; char hex[81]; // 16-е число char bin[321]; // 2-е число cout<<"Введите 16-ое число: \n"; n=0; k=0; // счетчики символов while ((ch=_getch())!= '\r') /* пока не нажата клавиша <Enter>, считываем символы с помощью функции _getch() */ { if (isxdigit(ch) && k<79) /* если считана 16-я цифра и кол-во цифр не слишком велико */ { сout << ch; hex[k++]= toupper(ch); /* выводим символ на экран и записываем его в строку hex, предварительно преобразовав в большую букву */ } else if (ch == '\b' && k > 0) /* Если нажата клавиша <Backspace> и количество символов в строке > 0 */ { Cout << "\b \b"; // стираем последний символ на экране k--; // и возвращаемся в строке на 1 байт назад } } //end while hex[k]=0; bin[n]=0; cout << endl; // Отмечаем концы строк и переводим курсор cout << hex << endl; // Выводимое 16-е число будет записано большими буквами // Перевод: _strrev(hex); // Переворачиваем 16-е число int des; //Здесь будет храниться 10-е число, соответствующее каждой 16-й цифре for (UINT i=0; i<strlen(hex); i++) // проходим по строке, хранящей 16-е число { // если очередной символ - цифра if (hex[i] <= '9') des = hex[i] - '0'; // получаем соответствующее число else des = hex[i]-'A'+10; // иначе получаем число для буквы // получаем 4 двоичных цифры для одной 16-й: for (int j=0; j<4; j++) { bin[n++] = des % 2 + '0'; des/=2; } } bin[n] = '\0'; _strrev(bin); // переворачиваем 2-е число cout<<"Соответствующее 2-ое число = \n"; for (UINT i=0; i<strlen(bin); i++) /* выводим 2-е число, разделяя каждую четверку цифр пробелом */ { cout<<bin[i]; if ((i+1)%4==0) cout <<' '; /* Если номер выведенной цифры делится на 4, выводим пробел */ } cout <<endl; // не забывайте переводить курсор в начало следующей строки _getch(); return 0; }
Date: 2016-08-30; view: 326; Нарушение авторских прав |