49

Нормализуйте манииссу в числах а) 0,0041,102 б) -16,78,10-3

04 февраля 2023

Нормализуйте манииссу в числах а) 0,0041,102 б) -16,78,10-3

категория: информатика

49

Невозможно нормализовать мантиссу числа, записанного в естественнойформе. Нормализация применяется для хранения чисел с плавающей запятой втаких форматах, как IEEE754 (он же Float) или Double. Структураразрядной сетки такого формата: [знак числа][смещенныйпорядок][нормализованная мантисса со скрытой единицей]. Если твоя задачасводится к нормализации сетки до мантиссы вида 1. Ххх, это говорит отом, что ты приводишь мантиссу к формату, пригодному именно для хранениячисла типа Float. Тогда в твоем примере это будет выглядеть так: 00111001000100100000000000000000 — нули слева убираем: 111001000100100000000000000000 — нормализуем мантиссу: 1,11001000100100000000000000000 х 2^29. Теперь мантисса нормализована. Если требуется разместить Float-запись этого числа, нужно сделать так: 1. [знак числа] — 1 бит: 0, если число положительное. 2.[смещенный порядок] — 8 бит: порядок числа +127 (т.е. он никогда небывет отрицательным, что избавляет нас от необходимости хранить отдельнознак порядка — в этом весь прикол формата IEEE754) 3.[нормализованная мантисса со скрытой единицей] — 23 бита: хранитнормализованную мантиссу. Поскольку мантисса всегда будет начинаться с 1. Ххх, единицу мы не пишем, чтобы сэкономить один разряд. ИТОГО: число в формате Float имеет точность 5-6 десятичных знаков и занимает 4 байта (32 бита) памяти. Итак: [0][10011100][11001000100100000000000], итого, мы получили число в формате Float, где: [10011100]=127+29=156 (10)=10011100 (2), а из мантиссы мы взяли только первые 23 разряда, скрыв единицу. Вданном случае число такое, что мы справа теряем только часть нулей, поэтому оно перевелось в Float без потерь значащих разрядов. Будь у насмантисса, наподобие этой: 1,11001000100100001000100001001 — частьразрядов мы бы потеряли, поскольку данная мантисса просто не влезла быцеликом в 23 разряда.

Знаете ответ?

Есть интересный вопрос? Задайте его нашему сообществу, у нас наверняка найдется ответ!
Делитесь опытом и знаниями, зарабатывайте награды и репутацию, заводите новых интересных друзей!
Задавайте интересные вопросы, давайте качественные ответы и зарабатывайте деньги. Подробнее...