Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию