УДК 511.11
ПЕРЕВОД ДРОБНЫХ ЧИСЕЛ В РАЗЛИЧНЫЕ СИСТЕМЫ СЧИСЛЕНИЯ СРЕДСТВАМИ MICROSOFT EXCEL
Е. Г. Иванова, В. Б. Вишневецкий
Донской государственный технический университет, г. Ростов-на-Дону, Российская Федерация
[email protected] ast6283@yandex. ru
Описан разработанный авторами простой метод, позволяющий с помощью программы Microsoft Excel переводить дробные числа из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную системы счисления и обратно. Приведены основные рабочие формулы. Данный метод может быть использован для автоматизации перевода дробных чисел в основные системы счисления при больших объёмах данных.
Ключевые слова: десятичная, двоичная, восьмеричная, шестнадцатеричная системы счисления, перевод дробных чисел, Microsoft Excel.
UDC 511.11
CONVERSION OF FRACTIONAL NUMBERS TO VARIOUS NUMBER SYSTEMS BY MEANS OF MICROSOFT EXCEL
E. G. Ivanova, V. B. Vishnevetskiy
Don State Technical University, Rostov-on-Don, Russian Federation
[email protected] [email protected]
The article describes the designed simple method, which makes it possible to converse fractional numbers from decimal number system to binary, octal, hexadecimal number systems by means of electronic program Microsoft Excel. It contains basic working formulas. This method may be used for automation of fractional numbers conversion to basic number systems in case of a large amount of data volume.
Keywords: decimal, binary, octal, hexadecimal number systems, fractional numbers conversion, Microsoft Excel.
Введение. Для автоматизации перевода чисел в основные системы счисления, используемые в современных информационных системах, существует достаточно большое количество инженерных калькуляторов (аппаратных и программных), а также специальные инженерные функции в табличном процессоре Microsoft Excel. Однако все эти средства работают только с целыми числами. На практике часто возникает необходимость в работе также и с дробными числами, представленными в различных системах счисления. Однако, доступных методов для автоматизации преобразования больших массивов дробных чисел между основными системами счисления для широкого круга пользователей в настоящее время не существует. Целью данной работы является создание метода автоматизированного перевода дробных чисел из одной системы счисления в другие средствами широко доступного табличного процессора Microsoft Excel.
Основная часть. Принцип перевода дробных чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную системы счисления заключается в следующем. Сначала выделяется целая часть числа с использованием встроенной в Excel математической функции ЦЕЛОЕ, затем вычисляется дробная часть числа как разница между исходным числом и его целой частью. Дробная часть умножается на основание системы счисления, после чего определяется
очередной разряд числа в новой системе счисления путём выделения и фиксирования целой части числа, полученного в результате умножения. Указанные действия в дальнейшем повторяются для получения следующих после запятой разрядов чисел до достижения требуемой точности вычислений. В завершении преобразования осуществляется сборка результирующего числа из полученных в каждом цикле отдельных разрядов.
Формулы в ячейках Excel для вычисления разрядов двоичного кода дробного десятичного числа показаны на рис. 1.
F G H
=А2 =U,E/1QE(F2) =TEKCT(G2;0)
=(F2-G2)*2 =ЦЕЛОЕ(РЗ) =TEKCT(G3;0)
=(F3-G3)*2 =U,E/1QE(F4) =TEKCT(G4;0)
=(F4-G4)*2 =ЦЕЛОЕ(Р5) =TEKCT(G5;0)
=(F5-G5)*2 =U,E/1QE(F6) =TEKCT(G6;0)
=(F6-G6)*2 =ЦЕЛОЕ(Р7) =TEKCT(G7;0)
=(F7-G7)*2 =U,E/1QE(FS) =TEKCT(GS;0)
=(FS-G8)*2 =ЦЕЛОЕ(Р9) =TEKCT(G9;0)
=(F9-G9)*2 =U,E/1QE(F10) =TEKCT(G10;0)
=(F10-G10)*2 =ЦЕЛОЕ(Р11} =TEKCT(G11;0)
=(F11-G11)*2 =U,E/1QE(F12) =TEKCT(G12;0)
=(F12-G12}*2 =ЦЕЛОЕ(Р13) =TEKCT(G13;0)
=(F13-G13)*2 =U,E/1QE(F14) =TEKCT(G14;0)
=(F14-G14}*2 =ЦЕЛОЕ(Р15} =TEKCT(G15;0)
=(F15-G15)*2 =L,E/1QE(F16) =TEKCT(G16;0)
=(F16-G16)*2 =ЦЕЛОЕ(Р17} =TEKCT(G17;0)
=(F17-G17)*2 =U,E/1QE(F1S) =TEKCT(G18;0)
Рис. 1. Формулы в ячейках Excel для вычисления разрядов двоичного кода дробного десятичного числа
В столбце G определяется целая часть числа, соответствующая i-му разряду двоичного кода; в столбце F вычисляется дробная часть, которая умножается на 2. Для соединения отдельных разрядов в результирующий двоичный код необходимо целые значения столбца G перевести в текст с помощью функции ТЕКСТ, так как функция соединения СЦЕПИТЬ работает только с текстовыми аргументами. Эту задачу выполняют формулы в столбце H. Окончательный вид двоичного кода преобразованного десятичного числа формируется в столбце B с помощью функции СЦЕПИТЬ (рис. 2).
A В С D
10 2 CO 16
0,731251 =СЦЕП ИТЬ( "0";Г|/'; H 3; Н4; H5; H 6; H 7; H S =СЦЕПИТЪ("0";\ ';K3;K A =СЦЕП ИТЬ( '0'; N3;
Рис. 2. Формулы в ячейках Excel для формирования выходного кода дробного десятичного числа
Перевод чисел в восьмеричную и шестнадцатеричную системы счисления осуществляется по аналогичным формулам с умножением дробной части числа соответственно на 8 и на 16. Особенностью перевода чисел в шестнадцатеричную систему счисления является возможность получения двузначного целого числа после умножения дробной части на 16 (числа от 10 до 15). Для формирования одного символа в каждом разряде целое значение числа, полученное после умножения дробной части на 16, необходимо перевести в шестнадцатиразрядный код с помощью инженерной функции ДЕС.В.ШЕСТН (рис. 3) [1].
I J К L М N
=А2 =ЦЕЛОЕ(12) =TEKCT[J2;0) =A2 =ЦЕ/10Е(1_2) =А2
=(I2-J2)*8 =ЦЕЛОЕ(13) =TEKCT[J3;0) =(L2-M2)*16 =L1,E/10E(L3} =ДЕС.Б.ШЕСТИ(МЗ)
=(I3-J3)*S =ЦЕЛОЕ(14) =TEKCT[J4;0) =(L3-M3)*16 =ЦЕЛОЕ(14} =Д ЕС. В. LU ЕСТН (М4}
=(I4-J4)*8 =ЦЕЛОЕ(15) =TEKCT[J5;0) =(L4-M4)*16 =ЦЕЛОЕ(Ь5) =Д ЕС. Е. LU ЕСТИ (М5)
=(I5-J5)*8 =ЦЕЛОЕ(1б) =TEKCT[J6;0) =(L5-M5)*16 =ЦЕЛОЕ(1_б) =Д ЕС. В. ШЕСТИ (Мб)
=(1б^16}*8 =ЦЕЛОЕ(17) =TEKCT[J7;0) =(L6-M6)*16 =ЦЕЛОЕ(17} =ДЕС.Б.ШЕСТИ(М7)
=(I7-J7)*S =ЦЕЛОЕ(18) =TEKCT(J8;0) =(L7-M7)*16 =ЦЕ/10Е(1-8) =ДЕС.В.ШЕСТН(МЙ)
=(IS-JS)*8 =ЦЕЛОЕ(1Э) =TEKCT[J9;0) =(L8-M8)*16 =ЦЕЛОЕ(13) =Д ЕС. Е. LU ЕСТИ (М9)
=(I&-J9)*8 =ЦЕЛ О Е( 110) =TEKCT[J10;0) =(L9-M9)*16 =ЦЕЛОЕ(ИО) =Д ЕС. Б. LU ЕСТМ (М10)
=(110ч110)*8 =ЦЕЛОЕ(111) =TEKCT[J11;0) =(L10-M1[))*16 =ЦЕЛОЕ(И1) =Д ЕС. Е. LU ЕСТИ (М11)
=(I11-J11)*8 =ЦЕЛОЕ(112) =TEKCT[J12;0) =(L11-M11)*16 =ЦЕЛОЕ(И2) =Д ЕС. Е. LU ЕСТИ (М12)
=(I12-J12)*S =ЦЕЛОЕ(113) =TEKCT[J13;0) =(LL2-M32)*16 =ЦЕЛОЕ(1_13} =ДЕС.В.ШЕСТН(М13)
=(I13-J13}*8 =ЦЕЛОЕ(114) =TEKCT[J14;0) =(LL3-M13)*16 =ЦЕЛОЕ(И4) =Д ЕС. Е. LU ЕСТН (М14)
=(I14-J14)*S =ЦЕЛОЕ(115) =TEKCT[J15;0) =( L14- M14) *16 =ЦЕЛОЕ(И5) =ДЕС.В.ШЕСТН(М15)
=(I15-J15)*8 =ЦЕЛОЕ(116) =TEKCT[J16;0) =(L15-M15)*16 =ЦЕЛОЕ(1_16) =Д ЕС. В. LU ЕСТИ (М16)
=(I16-J16}*S =ЦЕЛОЕ(117) =TEKCT[J17;0) =(Li6-Mi6)*i6 =ЦЕЛОЕ(И7} =Д ЕС. Б. LU ЕСТН (М17)
=(I17-J17)*8 =ЦЕЛОЕ(118) =TEKCT[J18;0) =( LL7- M17] *16 =ЦЕЛОЕ(И8) =Д ЕС. В. LU ЕСТМ (М18)
Рис. 3. Формулы в ячейках Excel для вычисления разрядов восьмеричного и шестнадцатеричного
кодов дробного десятичного числа
Принцип обратного перевода дробных чисел из рассмотренных систем счисления в десятичную систему состоит в следующем.
При переводе из двоичной системы счисления в десятичную, ограничиваясь точностью 9 знаков после запятой двоичного кода числа (что связано с ограниченным диапазоном представления чисел в Excel), исходное двоичное число умножается на 29 (10000000002), что позволяет получить из дробного числа целое. Полученное целое значение преобразуется в десятичный код с помощью инженерной функции ДВ.В.ДЕС [1], а затем делится на 29=512 для получения конечного десятичного числа.
При переводе из восьмеричной системы счисления в десятичную, ограничиваясь точностью 5 знаками после запятой восьмеричного кода числа (что связано с ограниченным диапазоном представления чисел в Excel), исходное восьмеричное число умножается на 85 (1000008), что позволяет получить из дробного числа целое. Полученное целое значение преобразуется в
десятичный код с помощью инженерной функции ВОСЬМ.В.ДЕС [1], а затем делится на 85=215=32768 для получения конечного десятичного числа.
Перевод из шестнадцатеричной системы счисления в десятичную, ограничивается точностью 4 знака после запятой шестнадцатеричного кода числа, что связано с ограниченным диапазоном представления чисел в Excel. При этом исходное шестнадцатеричное число, которое в общем случае может содержать текстовые символы A, B, C, D, E, F, преобразуется в текст с помощью функции ПСТР, что соответствует умножению на 164 (1000016). Это позволяет получить из дробного числа целое. Полученное целое значение преобразуется в десятичный код с помощью инженерной функции ШЕСТН.В.ДЕС [1], а затем делится на 16 -2 -65536 для получения конечного десятичного числа.
Вывод. Разработан оригинальный метод перевода дробных чисел между наиболее часто используемыми в информационных технологиях системами счисления, который позволяет средствами Microsoft Excel сравнительно просто автоматизировать перекодировку чисел с дробной частью при работе с большими объёмами данных. Разработанный метод восполняет недостатки многих калькуляторов и компьютерных программ, не имеющих подобных функций.
Библиографический список.
1. Engineering functions (reference) [электронный ресурс] / Try Microsoft Edge. — Режим доступа : https://support.office.com/ru-RU/article/Инженерные-функции-справка-9e99a6b0-1f32-4b25-be6c-c1d1c395e7de (дата обращения 01.04.2017)/