2016-02-21 7 views
0

Я пытаюсь преобразовать -75 в шестнадцатеричную плавающую точку. Эта плавающая точка состоит из 1 знакового бита, 5 битов экспоненты, 10 бит-бит и смещения = 15. Я смог преобразовать -75 в F 0000E 4B00000000. Но я не совсем уверен, как работает скрытая битовая система в этой шестнадцатеричной нотации? Я подозреваю, что его нет, потому что в двоичной системе есть 16 разных шестнадцатеричных цифр (0-F) вместо 2 (0-1).Преобразование отрицательного десятичного в шестнадцатеричное число с плавающей запятой

Так вот что я сделал:

-75 -> sign = -, so sign-bit = F. 
75 -> hexadecimal value = 4B. 
Normalise -> 4,B . 10^(-1). 
Exponent -> -1 + bias = -1 + 15 = 14 => 0000E. 
The complete floating point becomes: F 0000E 4B00000000. 

Правильно ли это?

+0

На каком языке программирования вы пытаетесь это сделать? Вероятно, вы должны включить это в текст своего вопроса, а также как тег. –

+0

Что означает «шестнадцатеричная плавающая точка»? Шестнадцатеричное представление в формате IEEE-754 является 'C2960000' для' -75.0f' и 'C052C00000000000' для' -75.0', если это то, о чем вы просите. –

+0

Это не язык программирования. Это теоретическое преобразование. И я не ищу шестнадцатеричное представление в IEEE754, но в системе, которую я описал в своем сообщении. Я знаю, что это запутанно, но я хотел бы полностью понять эти преобразования :). Спасибо за вашу помощь –

ответ

1

Как уже говорила Патрисия Шанахан в комментариях к вашему вопросу, маловероятно, что «бит» следует интерпретировать как полную шестую цифру. Бит всегда «bi nary digi t« Насколько я знаю.

Формат, который вы описываете, всего 16 бит. Это всего лишь 4 шестнадцатеричных цифры.

Фактически ваш формат звучит точно так же, как half-precision, иначе известный как binary16.

Я предлагаю вам сначала решить эту проблему как двоичную проблему. Вы получаете 16 бит bb...b:

bbbbbbbb bbbbbbbb 
\ /\/\ /\/
¯¯ ¯¯ ¯¯ ¯¯ 

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

Отказ от ответственности: Мы не можем точно знать, какой формат номера вы имеете в виду, поэтому мое решение - это своего рода квалифицированное предположение.

+0

Большое спасибо! Это действительно трюк :) –

+0

Единственная часть формата номера, которая была неясно мне, - это то, где шестнадцатеричная точка попадает в значение. Это влияет на то, является ли несмещенный показатель одним или двумя. В комментариях говорится, что речь идет о праве самой значащей цифры. Шестнадцатеричные форматы, которые я использовал, имели, при нормализации, самую значительную цифру справа от шестнадцатеричной точки.См. [Архитектура плавающей точки BM] (https://en.wikipedia.org/wiki/IBM_Floating_Point_Architecture) –

Смежные вопросы