ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Перевод из шестнадцатеричной в двоичную систему счисления на Си


Рассмотрим перевод числа из шестнадцатеричной в двоичную систему счисления. Будут приведены: правило перевода и код программы на языке Си, выполняющей данное преобразование.

Теоретические сведения

Число в шестнадцатеричной системе счисления состоит из цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (где A, B, C, D, E и F равны 10, 11, 12, 13, 14 и 15 соответственно).

Например 5B09F3 — это число в шестнадцатеричной системе счисления.

Для перевода числа из шестнадцатеричной системы счисления в двоичную систему необходимо каждую цифру шестнадцатеричного числа заменить соответствующей ей тетрадой (4 бита) из таблицы перевода, приведенной ниже.

Перевод из шестнадцатеричной в двоичную систему счисления на Си - vscode.ru

Приведем пример. Переведем число A50E7 в двоичную систему счисления. Для этого заменим каждую его цифру соответствующей ей тетрадой из таблицы перевода.

A50E7(16) = 10100101000011100111(2). Для удобочитаемости разные тетрады выделены разным начертанием шрифта.

Реализация программы

Напишем реализацию функции на языке программирования Си:

, которая переводит число a, записанное в шестнадцатеричной системе счисления, в двоичную систему и заносит результат в массив символов bin.

Функция fromHEXtoBIN принимает аргументы: число в шестнадцатеричной системе счисления и указатель на пустой массив типа char соответственно. fromHEXtoBIN возвращает указатель на массив, в котором хранится число в двоичной системе счисления.

В начале (строки 5-15) функция fromHEXtoBIN вычисляет количество цифр в числе a (число N). Затем (строка 16) выделяется необходимое количество памяти под двоичное представление числа, плюс один символ для нулевого символа — символа конца массива (‘\0’). После, начиная с конца числа a, для каждой его цифры выбирается соответствующая ей тетрада и заносится в массив bin (строки 17-151). Затем в конец массива добавляется нулевой символ (строка 152) и возвращается указатель на массив bin (строка 153).


Приведем пример консольной программы, использующей функцию fromHEXtoBIN, которая считывает число в шестнадцатеричной системе счисления, переводит его в двоичную систему и выводит результат на экран.

Обратите внимание. В операторе scanf_s используется параметр %x. Он указывает, что число будет вводится в шестнадцатеричном представлении.

Не забываем очищать память, выделенную под массив bin (оператор free)!

Демонстрация работы программы приведена на рисунке ниже:

Перевод числа из шестнадцатеричной системы счисления в двоичную - vscode.ru

Существует еще один вариант решения поставленной задачи. В некоторых реализациях компилятора языка Си присутствует нестандартная функция itoa, описанная в заголовочном файле <stdlib.h>.

Эта функция переводит число input в число с основанием системы счисления radix. Результат записывается в массив символов buffer.

В последних версиях компилятора C/C++ в Visual Studio функция itoa представлена следующим образом:

В _itoa_s необходимо передавать указатель на массив buffer размером sizeBuffer под который уже выделена память. Число value будет переведено в систему счисления с основанием radix, а результат перевода будет сохранен в массив символов buffer.

Приведем код программы, переводящей число из шестнадцатеричной в двоичную систему счисления с помощью функции _itoa_s.

Если вы хотите скачать исходники программ, приведенных в этой статье, то нажмите на кнопку.

Скачать исходники

 

 

5/5 - (5 голосов)



Поделиться в соц. сетях:

Добавить комментарий

Ваш адрес email не будет опубликован.