А) Получить шестнадцатеричную форму представления числа в формате с плавающей точкой в 4-х байтовой...

Тематика Информатика
Уровень 5 - 9 классы
шестнадцатеричная форма плавающая точка 4 байта восстановление числа внутреннее представление преобразование чисел вещественное число целое число вычисления программирование
0

а) Получить шестнадцатеричную форму представления числа в формате с плавающей точкой в 4-х байтовой ячейке. 1) -63,611 2) 60,509 б) По шестнадцатеричной форме внутреннего представления вещественного числа в 4-х байтовой ячейке восстановить само число. 1) 45DB0000 2) C88B6000 в) По шестнадцатеричной форме внутреннего представления целого числа в 2-х байтовой ячейке восстановить само число. 1) F6E5 2) 8D7 И распишите действия. Спасибо.

avatar
задан 3 дня назад

2 Ответа

0

Чтобы выполнить ваши запросы, сначала необходимо понимать, как числа представлены в формате с плавающей точкой и как они конвертируются в шестнадцатеричный формат. Мы будем использовать стандарт IEEE 754 для представления чисел с плавающей точкой в 32-битном формате (4 байта).

а) Получение шестнадцатеричной формы представления числа в формате с плавающей точкой

1) -63.611

  1. Переводим число в двоичную форму:

    • Записываем целую и дробную части:
      • Целая часть - 63:
        63 = 111111 (в двоичной системе)
      • Дробная часть - 0.611:
        0.611 × 2 = 1.222 (1)
        0.222 × 2 = 0.444 (0)
        0.444 × 2 = 0.888 (0)
        0.888 × 2 = 1.776 (1)
        0.776 × 2 = 1.552 (1)
        0.552 × 2 = 1.104 (1)
        0.104 × 2 = 0.208 (0)
        0.208 × 2 = 0.416 (0)
        0.416 × 2 = 0.832 (0)
        0.832 × 2 = 1.664 (1)
        • Останавливаемся на 10 знаках: 0.611 в двоичной форме примерно равно 0.1001100110.
    • Объединяем: -63.611 в двоичной форме ≈ -111111.1001100110.
  2. Нормализация:

    • Нормализуем: -1.1111111001100110 × 2^5.
  3. Определяем знак, порядок и мантиссу:

    • Знак (S): 1 (так как число отрицательное).
    • Порядок (E): 5 + 127 = 132 (в десятичной системе), а в двоичной: 10000100.
    • Мантисса (M): 1111111001100110 (включаем только 23 бита после запятой): 11111110011001100000000.
  4. Формируем 32-битное представление:

    • S | E | M = 1 | 10000100 | 11111110011001100000000.
  5. Переводим в шестнадцатеричную форму:
    1 10000100 11111110011001100000000 в двоичном =
    11000010011111111001100000000000 (в двоичном),
    что соответствует 0xC43FC000 в шестнадцатеричной системе.

2) 60.509

  1. Переводим число в двоичную форму:

    • Целая часть - 60:
      60 = 111100 (в двоичной системе).
    • Дробная часть - 0.509:
      0.509 × 2 = 1.018 (1)
      0.018 × 2 = 0.036 (0)
      0.036 × 2 = 0.072 (0)
      0.072 × 2 = 0.144 (0)
      0.144 × 2 = 0.288 (0)
      0.288 × 2 = 0.576 (0)
      0.576 × 2 = 1.152 (1)
      0.152 × 2 = 0.304 (0)
      0.304 × 2 = 0.608 (0)
      0.608 × 2 = 1.216 (1)
      • Останавливаемся на 10 знаках: 0.509 в двоичной форме ≈ 0.1000001101.
    • Объединяем: 60.509 в двоичной форме ≈ 111100.1000001101.
  2. Нормализация:

    • Нормализуем: 1.11100 × 2^5.
  3. Определяем знак, порядок и мантиссу:

    • Знак (S): 0.
    • Порядок (E): 5 + 127 = 132 (в десятичной системе), а в двоичной: 10000100.
    • Мантисса (M): 11100000000000000000000.
  4. Формируем 32-битное представление:

    • S | E | M = 0 | 10000100 | 11100000000000000000000.
  5. Переводим в шестнадцатеричную форму:
    0 10000100 11100000000000000000000 в двоичном =
    01000010011100000000000000000000 (в двоичном),
    что соответствует 0x423C0000 в шестнадцатеричной системе.

б) Восстановление числа по шестнадцатеричной форме

1) 45DB0000

  1. Переводим в двоичную форму:
    45DB0000 = 01000101 11011011 00000000 00000000.

  2. Извлекаем S, E, M:

    • S = 0.
    • E = 10000101 (в десятичной системе: 133).
    • M = 11011011000000000000000.
  3. Восстанавливаем число:

    • Порядок = 133 - 127 = 6.
    • Мантисса = 1.11011011 (нормализуем).
    • Число: 1.11011011 × 2^6 = 1111011.1 = 61.5.

2) C88B6000

  1. Переводим в двоичную форму:
    C88B6000 = 11001000 10001011 01100000 00000000.

  2. Извлекаем S, E, M:

    • S = 1.
    • E = 10001000 (в десятичной системе: 136).
    • M = 10001011011000000000000.
  3. Восстанавливаем число:

    • Порядок = 136 - 127 = 9.
    • Мантисса = 1.10001011011000000000000 (нормализуем).
    • Число: -1.10001011011000000000000 × 2^9 = -10011011011000000000000 = -460.0.

в) Восстановление целого числа из шестнадцатеричной формы

1) F6E5

  1. Переводим в двоичную форму:
    F6E5 = 11110110 11100101.

  2. Восстанавливаем число:

    • В двоичной форме: 11110110 11100101 (это отрицательное число, так как старший бит 1).
    • Используем дополнительный код:
      • Инвертируем биты: 00001001 00011010.
      • Добавляем 1: 00001001 00011011 = 0x09DB.
    • В десятичном: -251.

2) 8D7

  1. Переводим в двоичную форму:
    8D7 = 10001101 0111.

  2. Восстанавливаем число:

    • В двоичной форме: 10001101 0111 (это отрицательное число).
    • Используем дополнительный код:
      • Инвертируем биты: 01110010 1000.
      • Добавляем 1: 01110010 1001 = 0x72B.
    • В десятичном: -251.

Вот и все преобразования! Если у вас есть дополнительные вопросы, не стесняйтесь задавать!

avatar
ответил 3 дня назад
0

Введение в формат представления чисел

Прежде чем приступить к решению, важно понять, как числа хранятся в компьютере. Рассмотрим основные моменты:

  1. Числа с плавающей точкой (вещественные числа) хранятся в формате IEEE 754. Для 4-х байтовой (32-битной) ячейки этот формат выглядит так:

    • 1 бит — знак (0 — положительное число, 1 — отрицательное).
    • 8 бит — порядок (сдвиг на фиксированную величину, смещение на 127).
    • 23 бита — мантисса (дробная часть числа).
  2. Целые числа в 2-х байтах (16 бит) обычно хранятся в знаковом формате (со знаком) или беззнаковом формате. Если используется знаковое представление, старший бит указывает знак числа: 0 — положительное, 1 — отрицательное. Отрицательные числа хранятся в дополнительном коде.


а) Получить шестнадцатеричную форму представления числа в формате с плавающей точкой

Чтобы получить шестнадцатеричное представление числа в формате IEEE 754, следуем алгоритму:

  1. Представьте число в двоичном виде.
  2. Определите знак числа (1 для отрицательных, 0 для положительных).
  3. Преобразуйте число в нормализованную форму (1.m \times 2^e), где (1.m) — мантисса, (e) — порядок.
  4. Вычислите смещённый порядок (e' = e + 127).
  5. Запишите знак, порядок (8 бит), мантиссу (23 бита).
  6. Преобразуйте результат в шестнадцатеричную форму.

1) Для числа (-63,611):

  1. Число отрицательное, знак (S = 1).
  2. Десятичное число (-63,611) в двоичном виде: (111111.100111.).
  3. Нормализуем: (1.11111100111 \times 2^5).
  4. Порядок (e = 5). Смещённый порядок (e' = 5 + 127 = 132). В двоичном виде (132 = 10000100).
  5. Мантисса (23 бита): Берём дробную часть после запятой (11111100111), дополняем нулями до 23 бит: (11111100111000000000000).
  6. Записываем: знак (S = 1), порядок (e' = 10000100), мантисса (11111100111000000000000).
  7. Сборка: (1|10000100|11111100111000000000000).
  8. В шестнадцатеричном виде: (C47E4E00).

2) Для числа (60,509):

  1. Число положительное, знак (S = 0).
  2. Десятичное число (60,509) в двоичном виде: (111100.1000001001.).
  3. Нормализуем: (1.111001000001001 \times 2^5).
  4. Порядок (e = 5). Смещённый порядок (e' = 5 + 127 = 132). В двоичном виде (132 = 10000100).
  5. Мантисса (23 бита): (11100100000100100000000).
  6. Записываем: знак (S = 0), порядок (e' = 10000100), мантисса (11100100000100100000000).
  7. Сборка: (0|10000100|11100100000100100000000).
  8. В шестнадцатеричном виде: (42722000).

б) Восстановить вещественное число из шестнадцатеричного представления

Для восстановления числа:

  1. Преобразуем шестнадцатеричное число в двоичный вид.
  2. Разделяем на знак, порядок и мантиссу.
  3. Вычисляем порядок (e = e' - 127).
  4. Восстанавливаем нормализованное число и умножаем на (2^e).
  5. Учитываем знак числа.

1) Для числа (45DB0000):

  1. В шестнадцатеричном виде: (45DB0000). В двоичном виде: (01000101 11011011 00000000 00000000).
  2. Знак (S = 0) (число положительное).
  3. Порядок (e' = 10000101_2 = 133). (e = 133 - 127 = 6).
  4. Мантисса (1.11011011000000000000000).
  5. Число: (1.11011011 \times 2^6 = 111011.011 = 59,5).

2) Для числа (C88B6000):

  1. В шестнадцатеричном виде: (C88B6000). В двоичном виде: (11001000 10001011 01100000 00000000).
  2. Знак (S = 1) (число отрицательное).
  3. Порядок (e' = 10001000_2 = 136). (e = 136 - 127 = 9).
  4. Мантисса (1.00010110110000000000000).
  5. Число: (-1.0001011 \times 2^9 = -514,75).

в) Восстановить целое число из шестнадцатеричного представления

Для целых чисел:

  1. Преобразуйте шестнадцатеричное число в двоичный вид.
  2. Определите, знаковое или беззнаковое представление используется.
  3. Если число знаковое и старший бит равен 1, преобразуйте его из дополнительного кода.

1) Для числа (F6E5):

  1. В шестнадцатеричном виде: (F6E5). В двоичном виде: (11110110 11100101).
  2. Старший бит (1), значит число отрицательное.
  3. Преобразуем из дополнительного кода:
    • Инвертируем все биты: (00001001 00011010).
    • Прибавляем (1): (00001001 00011011 = 2347_{10}).
    • Добавляем знак: (-2347).

2) Для числа (08D7):

  1. В шестнадцатеричном виде: (08D7). В двоичном виде: (00001000 11010111).
  2. Старший бит (0), число положительное.
  3. Десятичное значение: (8D7{16} = 2263{10}).

Ответы:

а)

  1. (-63,611): (C47E4E00).
  2. (60,509): (42722000).

б)

  1. (45DB0000): (59,5).
  2. (C88B6000): (-514,75).

в)

  1. (F6E5): (-2347).
  2. (08D7): (2263).

avatar
ответил 3 дня назад

Ваш ответ

Вопросы по теме