Leave a comment

dvrz April 19 2019, 09:15:14 UTC
0.1 IEEE745
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.1*2 = 0.2
(целая часть 0)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
и т.д.
Получаем число в 2-ой системе счисления: 0001100110011001100110011001100110011001100110011001
0.1 = 00011001100110011001100110011001100110011001100110012
Сдвинем число на 4 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.1001100110011001100110011001100110011001100110010000
Экспонента exp2=-4
Преобразование двоичного нормализованного числа в 64 битный формат IEEE 754.
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 11 бит (с 2-го по 12-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте +1023. Таким образом, наша экспонента: -4 + 1023 = 1019
Переведем экспоненту в двоичное представление.
1019 = 11111110112
Оставшиеся 52 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M < 2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 1001100110011001100110011001100110011001100110010000
В результате число 0.1 представленное в IEEE 754 c двойной (double) точностью равно 011111110111001100110011001100110011001100110011001100110010000.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
011111110111001100110011001100110011001100110011001100110010000 по 2 = 0011 1111 1011 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 0000 по 2
Получаем число:
0011 1111 1011 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 0000 по 2 = 3FB9999999999990 по 16

0.2 IEEE745
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
и т.д.
Получаем число в 2-ой системе счисления: 0011001100110011001100110011001100110011001100110011
0.2 = 00110011001100110011001100110011001100110011001100112
Сдвинем число на 3 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.1001100110011001100110011001100110011001100110011000
Экспонента exp2=-3
Преобразование двоичного нормализованного числа в 64 битный формат IEEE 754.
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 11 бит (с 2-го по 12-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте +1023. Таким образом, наша экспонента: -3 + 1023 = 1020
Переведем экспоненту в двоичное представление.
1020 = 11111111002
Оставшиеся 52 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M < 2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 1001100110011001100110011001100110011001100110011000
В результате число 0.2 представленное в IEEE 754 c двойной (double) точностью равно 011111111001001100110011001100110011001100110011001100110011000.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
011111111001001100110011001100110011001100110011001100110011000 по 2 = 0011 1111 1100 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1000 по 2
Получаем число:
0011 1111 1100 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1000 по 2 = 3FC9999999999998 по 16

Обратно
3FB9999999999990 по 16 = 9.99999999999998667732370449812E-2
3FC9999999999998 по 16 = 1.99999999999999955591079014994E-1

сумма 0.2999999999999998223643160599752

Reply

(The comment has been removed)

der_skythe April 19 2019, 12:23:50 UTC
Когда знаешь систему, частности легко достроить.

Reply

kingeugen April 19 2019, 13:23:21 UTC
А кто-то же это придумал.

Reply

ext_2510871 May 6 2019, 12:03:30 UTC
Ты сходи посмотри, за что Грише Перельману лям начислили. Я того Пуанкаре зауважал безмерно. Человек, который это доказал, крут безмерно, но я в ахуе от того, кто это предположил.

Reply


Leave a comment

Up