Как мне преобразовать шестнадцатеричное число в формате IEEE 754 двойной точности (64 бита) в десятичное число?

#math #hex #ieee-754

#математика #шестнадцатеричное #ieee-754

Вопрос:

Моя задача — преобразовать шестнадцатеричное число в формат двойной точности (IEEE 754) на бумаге. Я уже преобразовал шестнадцатеричное число: 0x40790A0000000000 в двоичный 64-битный формат, и теперь у меня есть: 0 10000000111 1001000010100000000000000000000000000000000000000000

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

Комментарии:

1. Вам следует прочитать о формате IEEE 754 и преобразовать его части в знак, экспоненту и мантиссу

2. Ты ходил в FERI?

Ответ №1:

Переход от https://en.wikipedia.org/wiki/Double-precision_floating-point_format,

 4    0    7    9    0    A    0    0    0    0    0    0    0    0    0    0
0100 0000 0111 1001 0000 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0 - Sign bit (this is a positive number)
 100 0000 0111 - Exponent
               1001 0000 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 - Fraction
  

Значение экспоненты равно 1031. Поскольку оно ненулевое, дробная часть задается выражением 1 sum от i = 1 до 52 бит_(52-i) * 2 ^ (-i).

Следовательно, значение дроби равно 1 1/2 0/4 0/8 1/16 … ~= 1.56

Оттуда вы должны быть в состоянии вычислить остальное.

(Не решаю это полностью, потому что это выглядит как домашнее задание.)

Комментарии:

1. Я смотрел на это, но не совсем понял. Теперь, после простого объяснения, кажется более понятным, спасибо 🙂