1: запишите код действительного числа, интерпретируя его как величину типа double. а) 650,375 б)-974,5 ; 2 : дан код величины типа double. преобразуйте его в число. а) c05dca0000000000 б) 408e5b0000000000 ;

Yuliaburtseva1 Yuliaburtseva1    3   16.03.2019 13:23    67

Ответы
1)
а) Для записи числа 650,375 в стандартном формате типа double необходимо следовать правилам представления чисел в этом формате. В формате double число представляется с использованием 8 байтов, т.е. 64 битов.

Первый бит отводится для обозначения знака числа (0 для положительного числа, 1 для отрицательного числа), следующие 11 битов отводятся для записи экспоненты, а оставшиеся биты - для записи мантиссы.

Таким образом, для представления числа 650,375 в формате double сначала нужно определить его знак (положительный), а затем разложить его на мантиссу и экспоненту.

Мантисса представляет собой дробное число в двоичном формате с точкой слева. Для этого числа мантисса будет равна 650375, а экспонента будет равна 2 (потому что число 650,375 записывается как 6,50375 * 10^2).

Теперь давайте переведем мантиссу в двоичную систему счисления.

650375 (десятичное) = 10100000011100001111 (двоичное)

Теперь нужно сделать так, чтобы двоичное представление было нормализовано, то есть начиналось с 1 перед точкой.

10100000011100001111 = 1.0100000011100001111 * 2^18

Теперь осталось записать экспоненту в двоичном формате.

2 (десятичное) = 10 (двоичное)

Таким образом, код числа 650,375 типа double будет иметь следующий вид:

0 10000001010 0100000011100001111000000000000000000000000000000000

Это 64-битное представление числа 650,375 в формате double.

б) Для записи числа -974,5 нужно следовать тем же правилам, но учитывая знак числа.

Первый бит будет 1 (знак отрицательный), а затем следуют мантисса и экспонента числа.

Мантисса числа -974,5 будет 9745, а экспонента будет -2.

9745 (десятичное) = 10011000000001 (двоичное)

-2 (десятичное) = 11111111110 (двоичное)

Таким образом, код числа -974,5 типа double будет иметь следующий вид:

1 10000000011 1001100000000100000000000000000000000000000000000000

2)
а) Для преобразования кода c05dca0000000000 в число необходимо выполнить обратные действия, сопоставив биты с нужными частями числа.

Первый бит 1 указывает на отрицательное число, следующие 11 бит отвечают за экспоненту, а остальные биты - за мантиссу.

Экспонента в коде c05dca0000000000 составляет 05dca (шестнадцатеричное), и ее нужно преобразовать в десятичное число:

05dca (шестнадцатеричное) = 14986 (десятичное)

Мантисса в коде c05dca0000000000 составляет 0000000000 (шестнадцатеричное), что соответствует нулю.

Теперь нужно объединить все эти части для получения окончательного числа:

-1 * 0 * 2^(14986 - 1023)

Вычитаем 1023 из экспоненты, потому что в формате double экспонента смещена на 1023 - это помогает сопоставить экспоненту в коде с экспонентой в стандартной форме числа.

Рассчитаем значение экспоненты:

14986 - 1023 = 13963

Итак, число, соответствующее коду c05dca0000000000 типа double, будет иметь вид:

-0.0

б) Для преобразования кода 408e5b0000000000 в число нужно выполнить аналогичные действия.

Первый бит 0 указывает на положительное число, следующие 11 бит отвечают за экспоненту, а остальные биты - за мантиссу.

Экспонента в коде 408e5b0000000000 составляет 08e5b (шестнадцатеричное) и ее нужно преобразовать в десятичное число:

08e5b (шестнадцатеричное) = 36539 (десятичное)

Мантисса в коде 408e5b0000000000 составляет 0000000000 (шестнадцатеричное), что соответствует нулю.

Теперь нужно объединить все эти части для получения окончательного числа:

1 * 0 * 2^(36539 - 1023)

Вычитаем 1023 из экспоненты, потому что в формате double экспонента смещена на 1023 - это помогает сопоставить экспоненту в коде с экспонентой в стандартной форме числа.

Рассчитаем значение экспоненты:

36539 - 1023 = 35516

Итак, число, соответствующее коду 408e5b0000000000 типа double, будет иметь вид:

0.0
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика