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

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

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

Число в шестнадцатеричной системе счисления состоит из цифр: 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 (100%) 4 votes

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">