2004-gre-cs-practice-book.pdf/Q22 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) (Новая страница: « == Вопрос: Q22-4c9f66 == <i>Тут вставьте перевод вопроса. Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80…») |
StasFomin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | |||
== Вопрос: Q22-4c9f66 == | == Вопрос: Q22-4c9f66 == | ||
− | + | Согласно стандарту IEEE, 32-разрядное число с плавающей запятой одинарной точности ''N'' определяется как | |
− | + | ||
− | + | ||
− | + | ||
− | + | <m>N = (-1)^S \times 1.F \times 2^{E-127}</m> | |
− | < | + | |
− | ( | + | |
− | + | где ''S'' — знаковый бит, ''F'' — дробная мантисса, а ''E'' — смещенный показатель степени | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Число с плавающей запятой хранится в формате ''S : E : F'', где ''S'', ''E'' и ''F'' хранятся в 1 бите, 8 битах и 23 битах соответственно. | |
− | + | ||
− | + | ||
+ | Каково десятичное значение числа с плавающей запятой <tt>C1E00000</tt> (шестнадцатеричная система счисления)? | ||
+ | |||
+ | === Ответы === | ||
+ | * 26 | ||
+ | * −15 | ||
+ | * −26 | ||
+ | * Правильный ответ: −28 | ||
+ | * −59 | ||
=== Объяснение === | === Объяснение === | ||
− | |||
− | |||
− | Ну | + | Ну, считаем поля на глаз: |
+ | |||
+ | <code-python> | ||
+ | b_ = bin(0xC1E00000)[2:] | ||
+ | S = b_[:1] | ||
+ | E = b_[1:9] | ||
+ | F = b_[10:] | ||
+ | S, E, F | ||
+ | </code-python> | ||
+ | |||
+ | ('1', '10000011', '1000000000000000000000') | ||
+ | |||
+ | Видно, что-то отрицательное, | ||
+ | |||
+ | Показатель 4. | ||
+ | <code-python> | ||
+ | print(0b10000011-127) | ||
+ | </code-python> | ||
+ | |||
+ | <code-python> | ||
+ | print(0b1000000000000000000000) | ||
+ | … | ||
+ | 2097152 | ||
+ | </code-python> | ||
+ | |||
+ | 1.2097152**4 = 2.1415713601250426 | ||
+ | |||
+ | Надо разобраться, где-то накосячил. | ||
+ | |||
+ | |||
+ | |||
+ | {{cstest-source|2004-gre-cs-practice-book.pdf|21|22}} | ||
+ | |||
+ | {{question-ok|[[Участник:StasFomin|StasFomin]] 07:19, 14 декабря 2024 (UTC)}} | ||
− | + | [[Категория:Float]] | |
+ | [[Категория:Разобраться]] |
Текущая версия на 07:19, 14 декабря 2024
Вопрос: Q22-4c9f66
Согласно стандарту IEEE, 32-разрядное число с плавающей запятой одинарной точности N определяется как
где S — знаковый бит, F — дробная мантисса, а E — смещенный показатель степени
Число с плавающей запятой хранится в формате S : E : F, где S, E и F хранятся в 1 бите, 8 битах и 23 битах соответственно.
Каково десятичное значение числа с плавающей запятой C1E00000 (шестнадцатеричная система счисления)?
Ответы
- 26
- −15
- −26
- Правильный ответ: −28
- −59
Объяснение
Ну, считаем поля на глаз:
b_ = bin(0xC1E00000)[2:] S = b_[:1] E = b_[1:9] F = b_[10:] S, E, F
('1', '10000011', '1000000000000000000000')
Видно, что-то отрицательное,
Показатель 4.
print(0b10000011-127)
print(0b1000000000000000000000) … 2097152
1.2097152**4 = 2.1415713601250426
Надо разобраться, где-то накосячил.
Исходники — вопрос 22 на 21 странице книги «2004-gre-cs-practice-book.pdf»