Зачет по л.р. 1-2

Всем доброе время суток. Как все мы уже поняли после лабы 1-2 будет зачет по ней. Титов, конечно объяснял как решать задания по контрольной(зачету), но понять что-то из его уст крайне трудно, если упустил хоть пару слов, дальше уже ничего не понятно. (В т.ч. и я ничего особо не понял)

Итак, поехали. Здесь и далее «система счисления»=с.с, (10)-десятичная, (Q)-куичная, соответственно. (3)-это 3 в периоде!

#1 Дедовской контрольной: Представить число А в с.с Aq, в число B в с.с Bq.

На практике же решение выглядит так:

  1. Перевести число A(Aq) в 10-ю с.с
  2. Перевести число A’(10) в B(Bq)

Пример решения:

Задача: 22,1(3)->?(8)

1. Переведем целую часть 22,1(3)->?(10)

22

2. Переведем дробную часть 22,1(3)->(10)

01

Это переводила машина, но деду такое не прокатит, запишем дробную часть через дробь 1/3;

3. Переведем целую часть 8,(3) (10)-> ?(8)

8

4. Переведем дробную часть числа 8,(3) (10) -> ? (8)

0-3

Опять же машина не показывает нам  , что 0,2525…=0,(25), но, дед такое не простит.

5.Запишем окончательный ответ: 22,1 (3)->10,(25) (8)

#2 Дедовской контрольной: Представить отрицательное 10-е число в машинном представлении (16-HEX).

ВНИМАНИЕ: Не путать с простым переводом в 16-ю с.с.

Алгоритм перевода отриц. 10-го в машинное:

  1. Перевести модуль числа в 2-ю с.с.
  2. Инвертировать полученное число (заменить 0 на 1 и наоборот)
  3. Прибавить к полученному обратному коду (инвертированному числу) единицу
  4. Перевести полученное число в 16-ю с.с.

Алгоритм перевода машинного в 10-е число:

%d0%b5

После этого, перевести число в 10-ю систему. (Прошу заметить что нужно получить отрицательное число, этими методами вы получите модуль числа, крч, припишите «-» и все норм)

Пример: -255 представить в машинном

1) 255 (10)-> 1111 1111 (2)

2) !(1111 1111)-> 0000 0000

3) 0000 0000 + 1 = 0000 0001

4) 0000 (2)-> 0 (16), 0001->1(16)

5) Машинный код: 01 (16) (эквивалентен -255(10))

Ну и обратный пример: 01(16) представить в 10-й

1)0(16)->0000 (2), 1(16)->0001 (2)

2)0000 0001 — 1 = 0000 0000

3) !(0000 0000)= 1111 1111

4) 1111 1111(2) -> 255(10)

5) 01(16) эквивалентен -255 («-» мы просто приписали, исходя из условия задачи!)

Тут я немного сгорел от одного дотошного товарища, суть предъявы: «16-hex, значит должно быть 4 символа в 16-тиричной» Внимание: Число изначально надо писать в формате xxxx xxxx xxxx xxxx, иначе ответ будет не верным.

Надеюсь все знают, что 01(16)=0001(16). Сколько нам разрядов не хватает, мы добиваем нулями перед числом (они не значащие).

В ответе пишем 0001(16), соответственно.

#3 Дедовской контрольнойПеремножить 2 числа в q-й системе счисления, с проверкой в 10-й.

Тут все и как в обычной десятичной системе, т.к. она тоже позиционная. Только для увеличение старшего разряда надо набрать не 10 единиц, как мы привыкли, а q.

Пример: 212(3) * 12(3) = ?

3-3-3-3-3

  2) Выполним проверку:

212(3)->23(10), 12(3)->5(5),

23*5=115, 115(10)->11021(3)

#4 Дедовской контрольной: Представить число с плавающей точкой в 32-х битном машинном коде. (4-байта)

Дед втирал 20 минут какую-то дичь по этому поводу, но понять ход его мыслей доступно только избранным (никому из нас).

Я объясню так, на примере двух чисел, думаю все встанет на свои места.

Первое: 42,5 . Переводится однозначно (без периода) в 2-ю.

Представление двоичного числа с плавающей точкой в экспоненциальном нормализованном виде.

Для этого переведем число в двоичное представление.
42 = 1010102
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.5*2 = 1
(целая часть 1)
Получаем число в 2-ой системе счисления: 1
0.5 = 12
В итоге получаем число: 101010.12
Сдвинем число на 5 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.0101010
Экспонента(смещение) exp2=5

Преобразование двоичного нормализованного числа в 32-х битный формат
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 8 бит (с 2-го по 9-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента: 5 + 127 = 132
Переведем экспоненту в двоичное представление.
132 = 100001002
Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M < 2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 01010100000000000000000
В результате число 42.5 представленное в 32-х битном формате c одинарной точностью равно 01000010001010100000000000000000.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
010000100010101000000000000000002 = 0100 0010 0010 1010 0000 0000 0000 00002
Получаем число:
0100 0010 0010 1010 0000 0000 0000 0000 2 = 422A000016

Второе: -23,05. Однозначно не переводится в 2-ю.

Представление двоичного числа с плавающей точкой в экспоненциальном нормализованном виде.
Для этого переведем число в двоичное представление.
23 = 101112
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.05*2 = 0.1
(целая часть 0)
0.1*2 = 0.2
(целая часть 0)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
0.4*2 = 0.8
(целая часть 0)
0.8*2 = 1.6
(целая часть 1)
0.6*2 = 1.2
(целая часть 1)
0.2*2 = 0.4
(целая часть 0)
Получаем число в 2-ой системе счисления: 00001100110011001100110
0.05 = 000011001100110011001102
В итоге получаем число: 10111.000011001100110011001102
Сдвинем число на 4 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=-1.011100001100110011001100110
Экспонента exp2=4

Преобразование двоичного нормализованного числа в 32 битный формат
Первый бит отводится для обозначения знака числа. Поскольку число отрицательное, то первый бит равен 1
Следующие 8 бит (с 2-го по 9-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента: 4 + 127 = 131
Переведем экспоненту в двоичное представление.
131 = 100000112
Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M < 2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 01110000110011001100110
В результате число -23.05 представленное в 32 битном формате c одинарной точностью равно 11000001101110000110011001100110.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
110000011011100001100110011001102 = 1100 0001 1011 1000 0110 0110 0110 0110 2
Получаем число:
1100 0001 1011 1000 0110 0110 0110 0110 2 = C1B8666616

Внимание: Выяснилось дед не знает про смещение с 127, принимает только 126±. Но от этого ничего не меняется. И еще он не знает слово экспонента, поэтому, пишите *Смещение* вместо exp.

 

Сайты, благодаря которым я лично разобрался со всей этой дичью:

  1. Перевод систем счисления 
  2. Умножение/Деление систем счисления 
  3. Теория по представлению чисел в машинном коде
  4. Представление чисел с плав. запятой в м. коде
  5. Калькулятор для проверки перевода чисел с плав. запятой + комментарии

 

 

 

 

maxspt

2 комментария к “Зачет по л.р. 1-2”

Вы можетеоставить отзыв или Обратную ссылку эта запись.
  1. Ю - 02.10.2016 Ответить

    Ещё норм тему по теории 4 этот мужик втирает https://youtu.be/pOZzQqRkuRQ

  2. Хейтер - 02.10.2016 Ответить

    афтар жжот

Оставить отклик

Ваш адрес эл.почты не будет опубликован.