Другие языки программирования и технологии
Помогите с решением. Информатика.
Решаю контрольную, почти всё решила сама осталось только два задания которых не понимаю. Помоги с решением пожалуйста. Первое задание: 1. Записать код действительного числа, интерпретируя его как величину типа Double, результат закодировать в шестнадцатеричной системе счисления: а. -871,375; б. 303,15625. 2. Дан код величины типа Double, записанный шестнадцатеричными цифрами. Преобразовать его в число: а. 40820B0000000000; б. C05DCA0000000000. Второе задание: 1. Составьте и отладьте программу, реализующие: адрес первого неотрицательного элемента массива поместить в регистр R0.
Первое задание вам уже решили.
Теперь 2а. 40820B0000000000 преобразовывается в 10-ный вид так:
Нужно расписать его в двоичном виде, заменив каждую 16-тиричную цифру её двоичным кодом (0-0000, 1-0001, 2-0010, ..Е-1110, F-1111):
0100 0000 1000 0010 0000 1011 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
Теперь для удобства лучше разделить получившийся код на 1, 11 и 52 разряда:
0 10000001000 0010000010110000000000000000000000000000000000000000
Старший разряд, знаковый = 0, значит число положительное.
Следующие 11 разрядов - экспонента или порядок: степень двойки со смещением 1023.
10000001000 - это 1032. Для получения двоичной экспоненты нужно вычесть смещение: 1032-1023=9.
Далее идёт 52-разрядная нормализованная мантисса. Только дробная часть. Целая часть мантиссы всегда равна 1 и в Double не хранится.
Нужно записать целую часть = 1 и после запятой приписать мантиссу:
1.0010000010110000000000000000000000000000000000000000=1.001000001011
Теперь уже можно преобразовывать в 10-ный вид:
1.001000001011 = 1+1/8+1/512+1/2048+1/4096=1.127685546875
Далее учесть экспоненту:
1.127685546875*2^9=1.127685546875*512=577.375
Это и есть искомый вид числа в десятичной системе.
2б. C05DCA0000000000 аналогично:
1100 0000 0101 1101 1100 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
1 10000000101 1101110010100000000000000000000000000000000000000000
Старший разряд = 1, значит число отрицательное.
Смещённая экспонента 10000000101=1029. Несмещённая 1029-1023=6.
Нормализованная мантисса 1.11011100101
Здесь можно сделать по-другому. Сразу сдвинуть запятую вправо на 6 (двоичный порядок числа) разрядов.
Получится денормализованная мантисса 1110111.00101 - уже почти искомое число в двоичном виде.
В десятичном виде:
64+32+16+4+2+1+1/8+1/32=119.15625
Но число отрицательное, поэтому окончательный результат -119.15625
По второму заданию ничего не могу сказать. Ни язык (скорее всего, ассемблер) , ни процессор не указаны.
Теперь 2а. 40820B0000000000 преобразовывается в 10-ный вид так:
Нужно расписать его в двоичном виде, заменив каждую 16-тиричную цифру её двоичным кодом (0-0000, 1-0001, 2-0010, ..Е-1110, F-1111):
0100 0000 1000 0010 0000 1011 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
Теперь для удобства лучше разделить получившийся код на 1, 11 и 52 разряда:
0 10000001000 0010000010110000000000000000000000000000000000000000
Старший разряд, знаковый = 0, значит число положительное.
Следующие 11 разрядов - экспонента или порядок: степень двойки со смещением 1023.
10000001000 - это 1032. Для получения двоичной экспоненты нужно вычесть смещение: 1032-1023=9.
Далее идёт 52-разрядная нормализованная мантисса. Только дробная часть. Целая часть мантиссы всегда равна 1 и в Double не хранится.
Нужно записать целую часть = 1 и после запятой приписать мантиссу:
1.0010000010110000000000000000000000000000000000000000=1.001000001011
Теперь уже можно преобразовывать в 10-ный вид:
1.001000001011 = 1+1/8+1/512+1/2048+1/4096=1.127685546875
Далее учесть экспоненту:
1.127685546875*2^9=1.127685546875*512=577.375
Это и есть искомый вид числа в десятичной системе.
2б. C05DCA0000000000 аналогично:
1100 0000 0101 1101 1100 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
1 10000000101 1101110010100000000000000000000000000000000000000000
Старший разряд = 1, значит число отрицательное.
Смещённая экспонента 10000000101=1029. Несмещённая 1029-1023=6.
Нормализованная мантисса 1.11011100101
Здесь можно сделать по-другому. Сразу сдвинуть запятую вправо на 6 (двоичный порядок числа) разрядов.
Получится денормализованная мантисса 1110111.00101 - уже почти искомое число в двоичном виде.
В десятичном виде:
64+32+16+4+2+1+1/8+1/32=119.15625
Но число отрицательное, поэтому окончательный результат -119.15625
По второму заданию ничего не могу сказать. Ни язык (скорее всего, ассемблер) , ни процессор не указаны.
Похожие вопросы
- Помогите с решение задачи по информатике!!!
- Помогите, пожалуйста... Курс информатики, 9 класс. В паскале вообще ничего не понимаю((
- Помогите пожалуйста понять информатику и программирование.
- Помогите с решением. Паскаль.
- Кто-нибудь может помочь разобраться в информатике? У нас какие-то задания на системы счисления, я не понимаю
- Помогите, пожалуйста, с информатикой. 10 класс. Надо найти ошибку в программе. Язык паскаль
- Помогите срочно!!! По информатике Паскаль!!!
- Помогите пожалуйста с информатикой
- Помогите пожалуйста решить информатику, Паскаль.
- ПОМОГИТЕ ОЧЕНЬ СРОЧНО!! ИНФОРМАТИКА!!!ПАСКАЛЬ