Научная статья на тему 'ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ И ХРАНЕНИЯ В ПАМЯТИ ЭВМ ЗНАЧЕНИЙ, СООТВЕТСТВУЮЩИХ ФОРМЕ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ТОЧКОЙ СОГЛАСНО СТАНДАРТУ IEEE 754'

ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ И ХРАНЕНИЯ В ПАМЯТИ ЭВМ ЗНАЧЕНИЙ, СООТВЕТСТВУЮЩИХ ФОРМЕ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ТОЧКОЙ СОГЛАСНО СТАНДАРТУ IEEE 754 Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
6
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
число с плавающей точкой / мантисса / порядок / IEEE 754 / форма представления / точность / разрядная сетка / floating-point number / mantissa / order / IEEE 754 / representation form / accuracy / bit grid

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Никкель Кирилл Евгеньевич, Сосунов Андрей Алексеевич, Петросян Лусинэ Эдуардовна

В статье рассматриваются основные вопросы, связанные с особенностями хранения и использования чисел с плавающей запятой в памяти ЭВМ (электронно-вычислительных машин), соответствующие тематике таких чисел математические модели и алгоритмы некоторых операций, характерные для вышеуказанных чисел. Описывается суть чисел с плавающей запятой, их математическая и аппаратная структура. Рассматриваются вопросы нормализации и преобразования чисел для приведения их к виду, соответствующему требованиям основного регламентирующего стандарта, описывающего вопросы хранения таких чисел в памяти ЭВМ. Приводятся при-меры выполнения основных арифметических действий над числами в стандарте IEEE 754. Многие тезисы и утверждения иллюстрируются и подтверждаются программно.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Никкель Кирилл Евгеньевич, Сосунов Андрей Алексеевич, Петросян Лусинэ Эдуардовна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

FEATURES OF USING AND STORING IN COMPUTER MEMORY VALUES CORRESPONDING TO THE FORM OF REPRESENTATION OF FLOATING-POINT NUMBERS ACCORDING TO IEEE 754 STANDARD

The article considers the main issues related to the features of storing and using floating-point numbers in the memory of computers (electronic computers), mathematical models and algorithms of some operations that are characteris-tic of the above-mentioned numbers that correspond to the subject of such numbers. The essence of floating-point numbers, their mathematical and hardware structure are described. The issues of normalization and transformation of numbers to bring them to a form that meets the requirements of the main regulatory standard describing the issues of storing such num-bers in the memory of a computer are considered. Examples of performing basic arithmetic operations on numbers in the IEEE 754 standard are given. Many theses and statements are illustrated and confirmed by software.

Текст научной работы на тему «ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ И ХРАНЕНИЯ В ПАМЯТИ ЭВМ ЗНАЧЕНИЙ, СООТВЕТСТВУЮЩИХ ФОРМЕ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ТОЧКОЙ СОГЛАСНО СТАНДАРТУ IEEE 754»

Список литературы

1. Батанов А.А., Клочек А.М. Анализ применения агент-ориентированного моделирования к рассмотрению взаимодействия когнитивно информационных сообщений в форматах экстранет II и Web III // «Социально-гуманитарные проблемы образования и профессиональной самореализации «Социальный инженер-2022». Москва, 2022.

2. Грейди Бутч Объектно-ориентированный анализ. М.: Издательский дом Williams, 2019. 720 с.

3. Дерюгина Е., Пономаренко А., Рожкова А. Когда оценки кредитных разрывов являются достоверными? // Серия докладов об экономических исследованиях Банка России, № 34, 2018.

4. Макаров В.Л., Бахтизин А.Р., Сушко Е.Д. Агент-ориентированные модели как инструмент апробации управленческих решений. 2016.

5. Мордвинов В.А., Романченко А.Е., Ткаченко Д.И. Лекционные материалы по дисциплине: "Информационно-управляющие системы" учебно-методическое пособие для студентов бакалавриата. М.: РТУ МИРЭА, 2021. 146 с.

6. Чернов Е.А., Садчиков Н.Д. Оптимизация производственного процесса приборостроительного бюро с использованием математического моделирования в мобильном приложении // Научно-технический вестник Поволжья, 2024. №6. С. 198-201.

7. Пономаренко А., Селезнев С., Хабибуллин Р. Прогнозирование последствий накопления международных резервов при помощи агентной модели // Банк России. Сер. докладов об экономических исследованиях, № 37, 2018.

Клочек Алексей Михайлович, магистр, [email protected], Россия, Москва, Российский технологический университет МИРЭА

Садчиков Никита Дмитриевич, магистр, sadchikov.nikita2003@mail. ru, Россия, Москва, Российский технологический университет МИРЭА

ANALYSIS OF THE IMPACT OF AGENT-BASED MODELING ON BUSINESS DECISION-MAKING

A.M. Klochek, N.D. Sadchikov

The article discusses the main characteristics of AOM, its advantages, limitations, as well as specific business applications such as supply chain management, marketing and financial markets. In addition to analyzing the advantages and disadvantages of this method, recommendations are proposed for its implementation and development in companies to improve decision-making efficiency and reduce business risks.

Key words: agent-based modeling, decision making, supply chain management, marketing, financial markets, optimization, business modeling.

Kilochek Alexey Mikhailovich, master, [email protected], Russia, Moscow, Russian Technological University of

MIREA,

Sadchikov Nikita Dmitrievich, master, [email protected], Russia, Moscow, Russian Technological University MIREA

УДК 004.222.3

DOI: 10.24412/2071-6168-2024-10-695-696

ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ И ХРАНЕНИЯ В ПАМЯТИ ЭВМ ЗНАЧЕНИЙ, СООТВЕТСТВУЮЩИХ ФОРМЕ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ТОЧКОЙ СОГЛАСНО

СТАНДАРТУ IEEE 754

К.Е. Никкель, А.А. Сосунов, Л.Э. Петросян

В статье рассматриваются основные вопросы, связанные с особенностями хранения и использования чисел с плавающей запятой в памяти ЭВМ (электронно-вычислительных машин), соответствующие тематике таких чисел математические модели и алгоритмы некоторых операций, характерные для вышеуказанных чисел. Описывается суть чисел с плавающей запятой, их математическая и аппаратная структура. Рассматриваются вопросы нормализации и преобразования чисел для приведения их к виду, соответствующему требованиям основного регламентирующего стандарта, описывающего вопросы хранения таких чисел в памяти ЭВМ. Приводятся примеры выполнения основных арифметических действий над числами в стандарте IEEE 754. Многие тезисы и утверждения иллюстрируются и подтверждаются программно.

Ключевые слова: число с плавающей точкой, мантисса, порядок, IEEE 754, форма представления, точность, разрядная сетка.

В подавляющем большинстве современных высокоуровневых языках программирования есть примитивные типы данных, отвечающие за кодирование и хранение чисел разного вида. Эти числа могут быть самыми разными: натуральными, целыми, дробными, положительными, отрицательными и т.д. Для того чтобы максимально эффективно и в полной мере реализовать математическую иерархию множеств чисел, были придуманы различные типы данных. Например, в языке программирования Java для этих целей есть специальные классы-оболочки (wrap-

695

per classes): Integer, Double, Float и др. В языке C++ это устроено практически так же (табл. 1), разве что присутствует возможность (чего нет в языке Java) добавлять префикс unsigned, что может дать некоторые преимущества, в частности, расширить диапазон представления. Тип данных - это, по сути, одна из возможных форм представления числа. Форма представления числа - вариант распределения разрядов в имеющейся разрядной сетке между отдельными полями. Такие поля имеют определённые функциональные назначения. Ключевым объектом в классификации типов данных является положение десятичного разделителя, то есть точки.

Примеры типов данных ^

в языке программирования C++

Таблица 1

№ Тип данных Знак Разряды Диапазон

1 2 3 4 5

1 2 3 4 5

1 unsigned char без знака 1 байт [0;255]

2 unsigned short int без знака 2 байта [0; 65535]

3 unsigned int без знака 4 байта [0;4294967295]

4 unsigned long без знака 8 байт [0; 18446744073709551615]

5 short int со знаком 2 байта [-32768;32767]

6 int со знаком 4 байта [-2147483648; 2147483 647]

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

справа от младшего разряда, то можно закодировать положительные числа в диапазоне 0 < X < 2n -1 или числа со

знаком в диапазоне 1 - 2n-1 < X < 2n-1 -1 в сочетании с прямым кодом и в диапазоне - 2n-1 < X < 2n-1 -1 в сочетании с дополнительным кодом (при этом старший разряд является знаковым, «0» соответствует знаку «+», а «1» соответствует знаку « - »; n - количество разрядов). Такой формат широко используется и поддерживается разнообразными типами данных в языках программирования (табл. 1). Фиксация точки слева от младшего разряда - это теоретический случай, использование такого формата возможно только в ЭВМ специального назначения[1]. Если точка

фиксирована в середине, то диапазоны представления выглядят так: 0 < X < 2k - 2-m - для чисел без знака (только

положительные) и 0 < |x| < 2p - 2-r , где k и p - количество разрядов для целой части, m и r - для дробной.

Три рассмотренных выше случая положения десятичного разделителя в классификации форм представления чисел относятся к одной большой категории - формы представления чисел с фиксированной точкой. А вот форма представления чисел с плавающей точкой - это совсем другая категория. Этот случай является более сложным и порождает некоторые неоднозначности, которые нужно урегулировать. Все спорные вопросы решает международный стандарт IEEE 754, который в настоящее время выпущен в трёх редакциях - от 1985, 2008 и 2019 г.[2,8]. Этот стандарт описывает правила и принципы представления чисел с плавающей точкой. Он используется в программных и аппаратных реализациях арифметических действий. Некоторые вопросы, регулируемые стандартом IEEE 754-1985[3]:

- Представление нормализованных чисел с плавающей точкой;

- Представление ненормализованных чисел с плавающей точкой;

- Представление других специальных величин (нули, бесконечности и NaN);

- Четыре режима округления.

Способы округления чисел по стандарту IEEE 754[4]:

- Округление к ближайшему целому;

- Округление к нулю;

- Округление к

- Округление к -да.

Новый стандарт 2008 года призван заменить устаревший IEEE 754-1985. Из старого стандарта сохранили все двоичные форматы, но также добавили три новых (один бинарный и два десятичных). Для соответствия текущему стандарту реализация должна включать хотя бы один из основных форматов[5].

Множество разрядов в разрядной сетке делится на следующие поля (рис. 1).

Всего разрядов: п _ -к' ::i

Рис. 1. Типовая структура полей числа с плавающей точкой

В этом случае значение числа представляется как произведение мантиссы и характеристической части числа (характеристическая часть - основание системы счисления - как правило, 2 - возведённое в степень, равную порядку числа) (см. формулу 1):

X = ±М * 2±(2К-1), (1)

где X - представляемое число; М - мантисса, М е [0;1); К - порядок.

При этом диапазон представления чисел описывается формулой 2:

0 < |х| < (1 - 2-m) * 22(2)

где m - количество бит мантиссы; k - количество бит порядка.

Не сложно заметить, что для чисел с плавающей точкой возникает проблема неоднозначности представления: есть возможность умножать/делить мантиссу на основание системы счисления, соответственно меняя показатель степени[6]. Например, следующая строчка верна для десятичной системы счисления:

0,121 *106 = 1,21 *105 = ... = 12100 И01 = 121000 *100 = 1210000 *10-1 = 12100010

То же явление, но для двоичной системы счисления (другое число):

0,110101* 26 = 1,10101* 25 =... = 11010,1* 21 = 110101* 20 = 1101010 * 2-1 = 5310

Строчка выше, записанная с двоичными значениями в показателях:

0,110101* 2110 = 1,10101* 2101 = ... = 11010,1 * 21 = 110101 * 20 = 1101010 * 2-1 = 5310

Чтобы ограничить множественность вариантов представления одного и того же числа, договорились использовать нормализованный вид. Выделенное жирным - нормализованная форма записи (но не с точки зрения стандарта IEEE 754). Число считается нормализованным, если в старшем разряде после запятой стоит значащая цифра (в прямом коде двоичной системы счисления это 1), целая часть при этом должна равняться нулю. Если число не соответствует условиям выше, оно называется ненормализованным, денормализованным или субнормальным.

Особенность размещения разрядов нормализованных чисел в разрядной сетке состоит в том, что 0 как целая часть явным образом не хранится, т.е. предполагается, что в нормализованных числах целая часть всегда равна нулю, поэтому специального разряда для её хранения выделять не нужно, что даёт один дополнительный свободный разряд и, как следствие, увеличивает диапазон для соответствующего типа (см. рис. 2).

1 0 0 1 1 1 0 1 0 0 0

0.

- разряд для хранения знака порядка

- разряд для хранения знака мантиссы

- разряды для хранения порядка

- мнимый разряд для неявного хранения целой части

- разряды для хранения мантиссы

Рис. 2. Пример заполнения разрядной сетки для хранения нормализованного числа 0,000101

Рассмотрим несколько простых правил, с помощью которых нужно выполнять арифметические операции над числами с плавающей точкой. Сразу стоит оговорить тот момент, что представленные здесь правила немного отличаются от правил стандарта IEEE 754, т.к. мы пока что рассматриваем общую идею, а не сам стандарт.

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

5 3

Пусть даны два нормализованных двоичных числа: 0,1 * 2 и 0,1 * 2 (рис. 3). Произвести сложение и вы-

3 5

читание. Для начала произведём выравнивание порядков: 0,1 * 2 = 0,001 * 2 . Далее производим сложение и вычитание по правилам. В конце любых арифметических операций при необходимости производится нормализация результата. В случае вычитания результат нужно нормализировать, в случае сложения - нет.

0,100 + 0,100*2* + 0,00] * Г -0,001 *

0,101 0,011 =0Л1*24

Рис. 3. Пример осуществления операций сложения и вычитания

При умножении чисел с плавающей точкой порядки складываются, а мантиссы перемножаются. При делении из порядка делимого вычитается порядок делителя, мантиссы - делятся. Знак мантиссы, который получится в результате умножения или деления чисел определяется как результат операции «исключающее или» над знаками 1-го и 2-го аргументов. Рассмотрим пример с теми же числами (рис. 4):

0,1 * 25 ОД * 25

* о-1 * , / щ * ?3

0,01 * 2К = 0,1 *27 1 * 22 = 0,1 * 23 Рис 4. Пример осуществления операций умножения и деления

В настоящее время в стандарт IEEE 754 включено 5 форматов двоичной плавающей запятой, 3 из которых - основные. Формат восьмикратной точности используется крайне редко. Например, в настоящий момент не существует известной аппаратной реализации такой точности[7]. Формат половинной точности, как правило, в настоящее время тоже не используется, однако этот формат очень удобно рассматривать в учебных целях из-за его краткости.

Отличие одного формата от другого главным образом заключено в разном количестве бит, выделяемых для кодирования чисел. Для того чтобы максимально эффективно разобраться в различиях, выведем некоторые формулы, зависящие от величины n , где n - количество бит, выделяемых для кодирования чисел в конкретном формате. Так как в современных языках программирования половинная точность практически не используется, а самый «маленький» формат - binary32, то на практике справедливо: n: 32 (формат половинный точности сюда не относится, так как это скорее теоретический случай):

- Точность (количество битов, отданное под хранение мантиссы, включая ту целую часть, которая хранится неявно):

- Количество бит, отданное для хранения «хвоста» мантиссы (мантиссы без подразумеваемой целой части) на один разряд меньше точности: n - (4 * log2 n) +13 ;

- Количество бит для хранения знака не зависит от формата и всегда равно 1;

- Количество бит для хранения порядка: (4 * log2 n) +12;

- Согласно стандарту IEEE 754, мы не храним знак порядка, т.к. порядок всегда должен быть неотрицательным. Выполнение этого условия обеспечивается использованием симметричного кода со смещением при записи порядка. Такой подход упрощает выполнение операций сравнения и выравнивания порядков. Заметим, что истинный порядок может быть как положительным, так и отрицательным. Смещённый порядок, согласно стандарту, всегда неотрицательный. В таком подходе хранения порядка числа вводится понятие сдвиг или смещение, эта величина

вычисляется по формуле: 2n-1 -1.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Ниже в табличной форме представлена информация и параметры, используемые для кодирования для каждого формата (см. табл. 2 и рис.5).

Таблица 2

Параметры двоичных форматов стандарта IEEE 754_

Параметр Формат стандарта IEEE-754-2008

binary16 binary32 binary64 binary128 binary256

Полное название Половинная точность Одинарная точность Двойная точность Четырёхкратная точность Восьмикратная точность

Статус Не основной Основной Основной Основной Не основной

Объём занимаемой памяти (бит) 16 32 64 128 256

Тип данных в языке С++ - float double long double -

Точность в битах 11 24 53 113 237

Количество бит для хранения хвоста мантиссы 10 23 52 112 236

Количество бит для хранения знака 1 1 1 1 1

Количество бит для хранения порядка 5 8 11 15 19

Сдвиг, смещение 15 127 1023 16383 262 143

ь> t: 6i ы зе я st » ss si в н si я м -ts 47 4s 44 4: 4] 4» 9 и я а и н » 12 >: л я >7 zs я » я :: 2] я и s i; is i: 14 u 1: :: 10 1 s 6 5 4 j г 3 о разряд Х1Я хранения энака мактиссьт

ni] за й ^ is и ;; 11 19 it 1: и г к p г :: 1; 9 t та i 4 ; ; ] 0

- разряды Х1я хранения порядка _ разряды для хра н £ ыня хвоста мантнссЬ]

1« и 14 и и II 10 9 £ 7 6 i * 3 1 I о

Рис 5. Пример разрядных сеток для форматов binary64, binary 32, binaryl6

Реализация нормализации мантиссы в стандарте отличается от общей идеи. Сделано это для расширения диапазона представления чисел. Стандарт определяет нормализованную мантиссу следующим образом: она состоит из неявной целой части, которая всегда равна 1 (при этом не хранится в памяти явно), двоичного разделителя и остальных разрядов. При этом модуль нормализованной мантиссы охватывает диапазон [1;2). Мантисса хранится в прямом коде. Рассмотрим мотив использования такого механизма.

В соответствии с классическим понятием нормализации, единица справа от точки есть всегда (см. рис. 6):

698

0, 1 0 1 1 1 0 1 1 1

Рис. 6. Классическое нормализованное число

Поэтому мы могли бы умножить данное число на 2 (основание системы счисления, в которой работаем), т.е. фактически перенести запятую вправо на 1 разряд, тем самым сделав число с целой частью, равной 1. В таком случае у нас освободится младший разряд разрядной сетки для принятия какого-то нового значения (показано красным на рис. 7).

1, 0 1 I 1 0 1 1 1 0

Рис. 7. Принятие целой части равной 1

У нормализованного числа целая часть всегда равна 1, поэтому мы могли бы её не хранить в памяти явно, а просто подразумевать её наличие, за счёт этого можно выиграть 2 бита в записи числа (выделены красным на рис. 8).

0 1 1 1 0 1 1 1 0 0

Рис. 8. Отказ от хранения целой части

Если число не может быть сохранено в нормализованном виде, т.к. в рассматриваемом формате не хватает для этого разрядов порядка, то, возможно, это число можно сохранить в ненормализованном виде. Стандарт определяет ненормализованную мантиссу следующим образом: она состоит из неявной целой части, которая всегда равна 0 (на хранится в памяти), двоичного разделителя и остальных разрядов. При этом мантисса хранится в прямом коде. Таким образом, модуль ненормализованной мантиссы охватывает диапазон чисел [0;1). В этом случае выигрываем 1 бит в записи числа. Ниже на рис. 9 представлен механизм, о котором идёт речь. Сверху - мантисса классического нормализованного числа, а снизу продемонстрирован отказ от хранения целой части.

0, 0 0 0 1 1 1 1 1 1

0 0 0 1 1 1 1 1 1 0

Рис. 9. Представление мантиссы для ненормализованных чисел

Помимо стандартных чисел, дело может коснуться некоторых специальных случаев: нуля, бесконечности и NaN (not a number - не число). Таким образом, в рамках стандарта IEEE 754 существует 5 категорий отображаемых значений (см. табл. 3):

1) Нормализованное число

2) Ненормализованное число

3) Ноль

4) Бесконечность

5) Не число

Таблица 3

Категории отображаемых значений с учётом специальных случаев_

Тип числа Знак Вид порядка Вид мантиссы

Нормализованное число ± Не 0 и не все единицы Любой набор битов

Ненормализованное число ± 0 Любой ненулевой набор битов

Ноль ± 0 0

Бесконечность ± Все единицы (max) 0

Не число ± Все единицы (max) Любой ненулевой набор битов

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

теряем значение из числа, равное 2п+1 (см. рис. 10):

1 1 0 0 1 0 1

Рис. 10. Переполнение разрядной сетки

699

Ещё один случай - число не помещается в разрядную сетку, но мы пытаемся сохранить п старших разрядов числа, при этом младший разряд выходит из разрядной сетки справа. Происходит потеря точности примерно в 2 раза (см. рис. 11).

1 1 1 0 0 1 0

,1

Рис. 11. Потеря точности в 2 раза

Если п старших разрядов нулевые, а последующие разряды, выходящие за пределы разрядной сетки, ненулевые, то компьютер примет это ненулевое число за 0, такая ситуация называется машинный ноль (см. рис. 12):

,1 1 1

Рис. 12. Машинный ноль

Машинный ноль - частный случай, иллюстрирующий проблему непрерывности представления чисел в форматах стандарта IEEE 754. Такая проблема возникает из-за того, что размеры разрядной сетки ограничены. Иначе говоря, машинный ноль - числовое значение с таким отрицательным порядком, которое воспринимается машиной как ноль. Например, для числа одинарной точности машинный ноль будет лежать в диапазоне от - 2-150 до

2-150 . Таким образом, мы не сможем сохранить в память ЭВМ какие угодно числа, но мы сможем записывать числа с некоторым шагом. Рассмотрим данную ситуацию на примере двух чисел в формате половинной точности. Пусть даны два числа: 110 и 1,000976562510 . В двоичной системе счисления: 110 = 12 и 1,000976562510 = 1,00000000012 . В разрядных сетках представление этих чисел будет выглядеть так (см. рис. 13).

0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

1,

0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1

1,

Рис 13. Представления чисел в формате половинной точности

Получается, что числа в диапазоне 110 < X < 1,000976562510 не получится закодировать в рамках формата половинной точности стандарта IEEE 754. Аналогичные проблемы с нарушением непрерывности представления чисел, безусловно, имеются и в других форматах стандарта IEEE 754.

Выводы. Несмотря на то, что стандарт существует довольно давно и имеет широкое использование, в нём всё же есть некоторые неточности. Он постоянно пересматривается и уточняется. Последняя версия IEEE 7542019 вышла в июле 2019 года. Ввиду довольно большой скорости изменения технологий в построении компьютеров и организации процессорной архитектуры, стандарт и дальше будет подвергаться изменениям и доработкам. Более того, у стандарта IEEE 754 есть в некотором роде конкурент, речь идёт о ISO/IEC 60559, который в целом повторяет содержание IEEE 754. Следующая версия IEEE 754 планируется к выпуску в 2028 году.

Таким образом, с уверенностью можно сказать, что стандарт IEEE 754 в целом весьма хорош собой, он зарекомендовал себя уже давно. Но, тем не менее, это всего лишь рекомендация, нет никаких строгих обязательств в том, чтобы его использовать всегда и везде. Существует огромное количество специализированных ЭВМ, направленных на решение конкретных, узкопрофильных задач, функциональность которых вовсе не обязательно должна соответствовать функциональности по хранению и обработке чисел в современных компьютерах. В качестве примеров можно привести различные целочисленные счётчики, банкоматы, системы учёта дорожного трафика и т.п.

В рамках рассмотрения данного стандарта в контексте его улучшения можно предложить ряд следующих изменений. Первое: избавление от знаков нуля. Как мы уже убеждались выше, стандарт предусматривает положительный и отрицательный ноль. С точки зрения математики это не совсем корректно, было бы разумнее отдать эти последовательности битов под какие-то другие числа, а для нуля придумать что-то новое, чтобы избежать путаницы при изучении стандарта и обработки чисел. Второе: глобальная проблема потери точности - эта ситуация происходит очень часто при работы с любыми типами. Решить эту проблему с ходу вряд ли получится, так как в сущности стандарт и построен на идее поиска компромисса между точностью и диапазоном представления. Возможно, чтобы избежать эту проблему, потребуется совершенно новый подход, кардинально отличающийся от подхода, реализованного в стандарте IEEE 754.

Список литературы

1. Иевлев В.И., Филиппов Г.А. Качество и надежность электронной компонентной базы ЭВМ специального назначения: учебное пособие. 2013.

2. Brain M. et al. An automatable formal semantics for IEEE-754 floating-point arithmetic // 2015 IEEE 22nd Symposium on Computer Arithmetic. IEEE, 2015. С. 160-167.

3. Грошев А., Закляков П. Информатика. Litres, 2022.

4. Зыков А.Г., Поляков В.И. Арифметические основы ЭВМ. СПб: Университет ИТМО. 2016.

5. Kahan W. IEEE standard 754 for binary floating-point arithmetic // Lecture Notes on the Status of IEEE. 1996. Т. 754. №. 94720-1776. С. 11.

6. Холодилов С. Плавающая запятая // RSDN Magazine. 2007. №4. С. 12-14.

7. Бурдинский И.Н. Системы счисления и арифметика ЭВМ. 2014.

8. IEEE 754-2008 [Электронный ресурс] URL: https://web.archive.org/web/20200428043913/https://ru.wikipedia.org/wiki/IEEE 754-2008 (дата обращения: 06.11.2024).

Никкель Кирилл Евгеньевич, магистрант, [email protected], Россия, Москва, Российский технологический университет МИРЭА,

Сосунов Андрей Алексеевич, магистрант, [email protected], Россия, Москва, Российский технологический университет МИРЭА

Петросян Лусинэ Эдуардовна, канд. экон. наук, доцент, Petrosyan@mirea. ru, Россия, Москва, Российский технологический университет МИРЭА

FEATURES OF USING AND STORING IN COMPUTER MEMORY VALUES CORRESPONDING TO THE FORM OF REPRESENTATION OF FLOATING-POINT NUMBERS ACCORDING TO IEEE 754 STANDARD

K.E. Nikkel, A.A. Sosunov, L.E. Petrosyan

The article considers the main issues related to the features of storing and using floating-point numbers in the memory of computers (electronic computers), mathematical models and algorithms of some operations that are characteristic of the above-mentioned numbers that correspond to the subject of such numbers. The essence offloating-point numbers, their mathematical and hardware structure are described. The issues of normalization and transformation of numbers to bring them to a form that meets the requirements of the main regulatory standard describing the issues of storing such numbers in the memory of a computer are considered. Examples of performing basic arithmetic operations on numbers in the IEEE 754 standard are given. Many theses and statements are illustrated and confirmed by software.

Key words: floating-point number, mantissa, order, IEEE 754, representation form, accuracy, bit grid.

Nikkel Kirill Evgenievich, master's, [email protected], Russia, Moscow, Russia, Moscow, Russian University of Technology MIREA,

Sosunov Andrey Alekseevich, master's, [email protected]. ru, Russia, Moscow, Russia, Moscow, Russian University of Technology MIREA,

Petrosyan Lusine Eduardovna, candidate of economic sciences, docent, [email protected], Russia, Moscow, Russian University of Technology MIREA

УДК 004.43

DOI: 10.24412/2071-6168-2024-10-701 -702

СРАВНИТЕЛЬНЫЙ АНАЛИЗ БИБЛИОТЕК РЕАЛИЗАЦИИ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА

НА ЯЗЫКЕ C++

А.А. Шмаков, М.А. Одиноков, Л.Э. Петросян

В статье содержится краткий обзор библиотек реализации пользовательского интерфейса на языке C++. Рассматриваются наиболее популярные библиотеки: QT, wxWidgets, GTK+, FLTK (Fast, Light Toolkit) и MFC (Microsoft Foundation Classes).

Ключевые слова: сравнительный анализ, анализ, библиотеки, библиотека пользовательского интерфейса, GUI, C++, QT, wxWidgets, GTK+, FLTK, MFC.

Современные приложения требуют интуитивного, отзывчивого и удобного пользовательского интерфейса (GUI). Для создания интерфейсов на языке C++ существует несколько популярных библиотек, среди которых выделяются QT, wxWidgets, GTK+, FLTK (Fast, Light Toolkit) и MFC (Microsoft Foundation Classes).

Эти библиотеки позволяют разрабатывать кроссплатформенные приложения для Windows, macOS и Linux. В данной статье представлен сравнительный анализ библиотек QT и wxWidgets с точки зрения их архитектуры, возможностей и эффективности.

Материал исследования. QT. QT - это библиотека для разработки кроссплатформенных приложений с графическим интерфейсом, а также консольных приложений [1]. Она поддерживает широкий спектр функций, включая работу с сетью, базами данных, мультимедиа и многими другими аспектами разработки. QT использует

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

701

i Надоели баннеры? Вы всегда можете отключить рекламу.