Найти в Дзене

Буушков А.А. Статья 7. Цифровые форматы.

Прежде чем переходить к созданию команд Центрального процессора необходимо придумать как представляются числа с помощью байтов и битов. Например: Прежде чем делать операции над числами A, B нужно понимать, как представляются эти числа в цифровом виде. Можно пойти двумя путями. 1. Воспользоваться существующими и уже принятыми форматами чисел, которые используются в большинстве компьютеров. 2. Придумать свои форматы для решения своих специфических задач. Такими специфическими задачами могут быть финансовые операции, астрономические вычисления на огромных расстояниях и др. Финансовые операции с очень большими суммами. Например, пусть нужно сосчитать сколько триллионов в иностранной валюте ходит в мире с учетом центов. Деньги любят счет и эти большие числа в центах должны быть целыми без округлений, а значит без потерь. В мире сейчас циркулирует около 90 триллионов долларов, округлим до 100 триллионов. Это число 10 в степени 16 центов. А если эту сумму перевести по курсу в японскую йену,
Оглавление

Прежде чем переходить к созданию команд Центрального процессора необходимо придумать как представляются числа с помощью байтов и битов. Например:

Прежде чем делать операции над числами A, B нужно понимать, как представляются эти числа в цифровом виде.

Можно пойти двумя путями.

1. Воспользоваться существующими и уже принятыми форматами чисел, которые используются в большинстве компьютеров.

2. Придумать свои форматы для решения своих специфических задач.

Такими специфическими задачами могут быть финансовые операции, астрономические вычисления на огромных расстояниях и др.

Финансовые операции с очень большими суммами. Например, пусть нужно сосчитать сколько триллионов в иностранной валюте ходит в мире с учетом центов. Деньги любят счет и эти большие числа в центах должны быть целыми без округлений, а значит без потерь.

В мире сейчас циркулирует около 90 триллионов долларов, округлим до 100 триллионов.

Это число 10 в степени 16 центов.

А если эту сумму перевести по курсу в японскую йену, то будет еще больше:

1 Японская йена = 0,0073244 Доллара США

1 Доллар США = 136,53 Японской йены, на 01.01.2022 по курсу ЦБ РФ.

Прибавится еще три порядка, т.е. будет

10 в степени 19 центов. Это огромное число. И таких форматов в обычных компьютерах для целых чисел нет. Конечно, деньги считают на современных ЭВМ, но помощью специальных программ, а не с помощью существующих и принятых цифровых форматов.

Поэтому здесь можно придумать свои цифровые форматы.

В астрономии принято расстояния выражать в световых годах.

Световой год – это расстояние, которое проходит свет за 1 земной год.

1 световой год = 9460730472580.8 километра или это соответствует 9,46×10^12 км.

Это тоже огромные числа, а если перевести в метры, то это будет примерно 10 в степени 15.

И здесь можно придумать свои форматы для целых чисел.

Прежде чем придумывать свои цифровые форматы

рассмотрим некоторые уже существующие и принятые форматы.

1. Формат целых чисел размером 2 байта или короткое целое:

-2

0 в 15 разряде означает знак числа +

1 в 15 разряде означает знак числа -

Разряды 0-14 выражают абсолютное значение числа в диапазоне от 0 до 32767.

В данном случае здесь изображено число 0 со знаком +.

-3

Это число 0 со знаком -

-4

Это число 32767 с знаком +

-5

Это число 32767 со знаком –

1. Форматы целых чисел размером 4 байта или длинное целое:

Знак числа будет отображаться в 31 двоичном разряде .

0 в 31 разряде означает знак числа +

1 в 31 разряде означает знак числа -

Разряды 0-30 выражают абсолютное значение числа в диапазоне от 0 до 2 147 483 647

2. Форматы целых чисел размером 8 байт и более не существуют.

3. Есть беззнаковые целые размером 2 байта в диапазоне значений от 0 до 65535.

4. Есть беззнаковые целые размером 4 байта в диапазоне значений от 0 до 4 294 967 295

5. Есть логический формат размером 1 байт с двумя значениями:

True или False

-------------------------------------------------------------------------------------

Форматы с фиксированной точкой (FixP).

Самый старший бит определяет знак числа также как в целых числах. 0 – число положительное, 1 – число отрицательное.

Положение точки только подразумевается.

Количество бит целой части определяется число k.

Количество бит дробной части определяется числом r.

Целая часть располагается слева в старших битах, дробная часть располагается справа в младших битах числа.

Значение чисел k,r задается раз и навсегда для конкретного ЦП и определяется конструктивными свойствами ЭВМ, такими как обьём ОЗУ, ширина выборки данных из ОЗУ и др.

Рассмотрим учебный пример числа с FixP, полный размер которого пусть будет равен 2 байтам.

-6

15й бит – знак числа.

8-14 биты – целая часть числа

0-7 биты – дробная часть числа.

k = 7 (отсчет от 8 до 14)

r = 8 (отсчет от 0 до 7)

Рассмотрим диапазон значений этого учебного числа.

Максимальное значение целой части числа равно 127.

Минимальное значение целой части числа равно 0.

Минимальное не нулевое значение дробной части числа равно 2 в степени -8 или 0.00390625

Максимальное значение дробной части равно 0.99609375

Т.е. дробная часть меньше чем 0.00390625 в таком формате из 2х байт не отображается. Для этого нужен формат из 4х и более байт.

Покажем вес дробных разрядов этого учебного числа:

-7

Вес разрядов целой части уже рассматривали ранее.

Теперь представим некоторое произвольное число +83.8796874 в формате этого учебного числа с фиксированной точкой.

Отдельно представим целую и дробную части.

Целая часть очевидно будет выглядеть так:

83 = 64 + 16 + 2 + 1

-8
-9
-10

В современных ЦП числа с фиксированной точкой имеют размер 8 байт или 64 бита ( от 0 до 63).

Бит 63 – знак числа.

Целая часть имеет 31 бит (от 32 до 62), k = 31 ( от 32 до 62)

Дробная часть имеет 32 бита (от 0 до 31), r =32 ( от 0 до 31)

Максимальное значение целой части такое же как в формате целых в 4х байтах и равно: 2 147 483 647

Минимальное не нулевое значение дробной части такого числа равно:

-11

Такой точности вполне достаточно для инженерных и научных расчетов

Надо иметь в виду, что любое произвольное число представляется в памяти компьютера с некоторым округлением, которое вызвано дискретностью представления в цифровом виде.

------------------------------------------------------------------------------------

Формат с плавающей точкой (FloP).

-12

В основе формата лежит представление чисел в виде произведения Порядка и Мантиссы.

-13

В формате с плавающей точкой число можно представить многими способами. Чтобы число представлялось с наибольшей точностью, его представляют в нормализованном виде. Это когда после нуля и запятой в мантиссе сразу идёт не нулевое число, например п.2 выше.

Если представлять число как в п.3 и 4, то при условии, что на мантиссу отводится 11 разрядов, в п.3 теряется один значащий разряд, а в п.4 теряется два значащих разряда (выделено красным) и это уменьшает точность представления числа, что не желательно.

В нормализованном виде формат с плавающей запятой выглядит так в десятичной Системе Счисления (СС), если на мантиссу отводится определенное количество разрядов -11 в данном случае:

-14

После нуля и запятой идет не нулевое число.

В ЭВМ эти правила применяются к Двоичной СС.

Рассмотрим конкретный формат числа с плавающей точкой в двоичной

СС из 4х байт, который используется в ЭВМ и ПК. Это одинарная точность.

Рисунок1
Рисунок1

31 бит – знак всего числа

30 бит – знак Порядка. Поскольку отрицательные числа изображаются в дополнительном коде, то 30 бит входит в общее число битов Порядка.

(0-22) биты – Мантисса. Вес разрядов исчисляется так же как и в Дробной части в формате с фиксированной точкой.

(23-30) биты – Порядок. Порядок числа 2 в степени значения 8 битов 23-30

Формат числа с плавающей точкой двойной точности

Рисунок2
Рисунок2

63 бит- знак всего числа.

62 бит - знак Порядка. Поскольку отрицательные числа изображаются в дополнительном коде, то 62 бит входит в общее число битов Порядка.

(0-51) биты – Мантисса. Вес разрядов исчисляется так же как и в Дробной части в формате с фиксированной точкой.

(52-62) биты – Порядок. Порядок числа 2 в степени значения

11 битов (52-62).

Основные свойства форматов с плавающей точкой.

1. Формат из 4х байт или «Float32» или «Single»

Диапазон представления чисел

1.18E-38 <|X|<3.40E+38

Точность представления менее 2^-23, или менее 1.192Е-7.

Т.е. точность 7 знаков после запятой.

2. Формат из 8 байт или «Float64» или «Double»

Диапазон представления чисел

2.23E-308 <|X|< 1.79E+308

Точность представления чисел менее 2^-52, или менее 2.22E-16.

Т.е. точность 15 знаков после запятой.

3. Формат из 16 байт или «Float128» или Четверная точность

Диапазон представления чисел

3.3621E-4932 < |X| < 1.1897E+4932

Точность представления чисел менее 2^-52, или менее 1.9259E-34

Т.е. точность 34 знака после запятой.

--------------

Переведем число Пи = 3,1415926536

в формат чисел с плавающей точкой из 4х байт.

Составим таблицу с такими весами битов в соответствии с Рисунком1

-17

Технология перевода такая.

1. 3,1415926536 – 2 = 1.1415926536 Бит 24 =1

2. 1.1415926536 – 1 = 0.1415926536 Бит 23 =1

3. 0.1415926536 < 0.5 Бит22 =0

4. 0.1415926536 < 0.25 Бит 21 =0

5. 0.1415926536 -0.125 = 0.0165926536 Бит 20 =1

6. 0.0165926536<0.0625 Бит19 = 0

7. 0.0165926536<0.03125 Бит18 = 0

8. 0.0165926536-0.015625= 0.0009676536 Бит17= 1

9. 0.0009676536<0.0078125 Бит16= 0

10. 0.0009676536<0.00390625 Бит15= 0

11. 0.0009676536<0.001953125 Бит14= 0

12. 0.0009676536<0.0009765625 Бит13= 0

13. 0.0009676536-0.00048828125=0.00047937235 Бит12= 1

14. 0.00047937235-0.000244140625= 0.000235231725 Бит11= 1

И так далее…

Получили число Пи = 11.00100100001111…

В формате с фиксированной точкой.

Проверим в интернете число Пи с фиксированной точкой:

Пи = 11.00100100001111110110

Получили отличное соответствие!

Рисунок1 по весам разрядов совпадает с форматом числа с фиксированной точкой.

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

Пи = 2^2*0.1100100100001111…

Это нормализованное число Пи.

Окончательно представляем число Пи в формате с плавающей точкой:

-18

Есть и другие цифровые форматы, например, строковые, символьные.

Я не ставлю своей задачей рассмотреть детально все имеющиеся цифровые форматы. Основная цель – познакомить читателя с тем, с чем работает ЦП и побудить читателя к творческому подходу. Возможно, кто-то будет строить свой ЦП со своими форматами и командами. Такие примеры есть. В США в то время, когда Г.Каспаров был чемпионом мира по шахматам, двое американцев создали ЭВМ(ЦП), которая обыграла Каспарова в шахматы.

Один из них создал ЭВМ, другой написал программу. У того, кто создавал ЭВМ, на стене в кабинете висела блок-схема той ЭВМ (ЦП) и он её не прятал. На вопрос почему не прячешь, ответ был такой: всё равно никто не поймёт!

Так, что есть шанс создать свой уникальный ЦП!

Сотрудники Вычислительного Центра Главсредволговодстроя, г. Саратов, 1977-1993.

Суржанский Юрий Васильевич, Бенцеитова Татьяна, Чернявский Петр, Усманова Натальяя, Палатов Юрий
Суржанский Юрий Васильевич, Бенцеитова Татьяна, Чернявский Петр, Усманова Натальяя, Палатов Юрий
Бенцеитова Татьяна, Чернявский Пётр, ..., Усманова Наталья
Бенцеитова Татьяна, Чернявский Пётр, ..., Усманова Наталья
Воротнёв Алексей
Воротнёв Алексей

------------------------------

Если Вам понравился материал статьи, подпишитесь пожалуйста на мой канал в целом.

Для этого пройдите по ссылке ниже и нажмите кнопку "Подписаться"

https://dzen.ru/profile/editor/id/62cd3cfc63f88417d7e74b79