ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.06.2021
Просмотров: 305
Скачиваний: 1
A(p) = an-1pn-1 + an-2pn-2 + …+ a1p1 + a0p0 + a-1p-1 + a-2p-2 +…+ a-mp-m (18)
Таблица 2. Значения отрицательных степеней по основанию числа 2
|
Отрицательная степень |
Два в указанной степени |
|
1 |
0,5 |
|
2 |
0,25 |
|
3 |
0,125 |
|
4 |
0,0625 |
|
5 |
0,03125 |
|
6 |
0,015625 |
|
7 |
0,0078125 |
Таблица 3. Значения отрицательных степеней по основанию числа 16
|
Отрицательная степень |
Шестнадцать в указанной степени |
|
1 |
0,0625 |
|
2 |
0,00390625 |
|
3 |
0,000244140625 |
|
4 |
0,0000152587890625 |
|
5 |
0,00000095367431640625 |
|
6 |
0,000000059604644775390625 |
|
7 |
0,0000000037252902984619140625 |
Общий алгоритм перевода десятичной дроби в другую систему счисления можно представить следующей последовательностью шагов.
1. Выделить целую часть десятичной дроби и выполнить ее перевод в выбранную систему счисления по алгоритмам, рассмотренным ранее.
2. Выделить дробную часть и умножить ее на основание выбранной новой системы счисления.
3. В полученной после умножения дробной части десятичной дроби выделить целую часть и принять ее в качестве значения первого после запятой разряда числа в новой системе счисления.
4. Если дробная часть значения, полученного после умножения, равна нулю, то прекратить процесс перевода. Процесс перевода можно прекратить также в случае, если достигнута необходимая точность вычисления. В противном случае вернуться к шагу 3.
Пример. Пусть требуется перевести в двоичную систему счисления десятичную дробь 108,40610.
При переводе дробного числа из десятичной системы счисления в шестнадцатеричную целесообразно предварительно перевести число в двоичную систему, а затем двоичное представление разбить на тетрады отдельно до разделительной запятой и после запятой. Разбиение на тетрады двоичных разрядов целой части производят от запятой в сторону старших разрядов. Неполную старшую тетраду дополняют слева нулями. Разряды дробной части, напротив, разбивают на тетрады от запятой вправо к младшим разрядам. Если последняя тетрада неполная, то ее дополняют нулями справа.
Перевод чисел со знаком
Отрицательные целые со знаком — это все числа, меньшие 0. Отличительным признаком числа со знаком является особая трактовка старшего бита поля, представляющего число. В качестве поля могут выступать байт, слово или двойное слово, естественно, что физически этот бит ничем не отличается от других — все зависит от команды, работающей с данным полем. Если в ее алгоритме заложена возможность работы с целыми числами со знаком, то команда будет по-особому трактовать старший бит поля. Если старший бит равен 0, число считается положительным и его значение вычисляется по правилам, которые мы рассмотрели ранее. Если старший бит Равен 1, число считается отрицательным, а это предполагает, что оно записано в так называемом дополнительном коде. Разберемся в том, что он собой представляет.
Дополнительный код некоторого отрицательного числа представляет собой результат инвертирования (замены 1 на 0 и наоборот) каждого бита двоичного числа, равного модулю исходного отрицательного числа плюс единица. К примеру, рассмотрим десятичное число -18510. Модуль данного числа в двоичном представлении равен 101110012. Сначала нужно дополнить это значение слева нулями до нужной размерности — байта, слова и т. д. В данном случае дополнить нужно до слова, так как диапазон представления знаковых чисел в байте составляет -128...127. Следующее действие — получить двоичное дополнение. Для этого все разряды двоичного числа нужно инвертировать:
00000000101110012 1111111010001102
Теперь прибавляется единица:
1111111010001102 + 0000000000000001 = 1111111010001112
Результат преобразования равен 11111111010001112. Именно так и представляется число -18510 в компьютере.
Для выполнения обратного преобразования необходимо двоичное дополнение числа, определить значение его модуля. Для этого необходимо выполнить два действия.
1. Выполнить инвертирование битов двоичного дополнения.
2. К полученному двоичному числу прибавить двоичную единицу. К примеру, определим модуль двоичного представления числа
-18510 = 11111111010001112.
Сначала инвертируем биты:
11111111010001112 00000000101110002.
Добавляем двоичную единицу: 00000000101110002 + 00000000000000012 = 00000000101110012 = |-185|.
II. Перечень вариантов заданий к контрольной работе.
1. Переведите числа в десятичную систему, а затем проверьте результаты, выполнив обратные переводы:
|
а) 10110112; |
е) 5178; |
л) 1F16; |
|
б) 101101112; |
ж) 10108; |
м) ABC16; |
|
в) 0111000012; |
з) 12348; |
н) 101016; |
|
г) 0,10001102; |
и) 0,348; |
о) 0,А416; |
|
д) 110100,112; |
к) 123,418; |
п) 1DE,C816. |
2. Переведите числа из десятичной системы в двоичную, восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:
а) 12510; б) 22910; в) 8810; г) 37,2510; д) 206,12510.
3. Переведите числа из двоичной системы в восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:
|
а) 1001111110111,01112; |
г) 1011110011100,112; |
|
б) 1110101011,10111012; |
д) 10111,11111011112; |
|
в) 10111001,1011001112; |
е) 1100010101,110012. |
4. Переведите в двоичную и восьмеричную системы шестнадцатеричные числа:
а)
2СE16;
б) 9F4016;
в) ABCDE16;
г) 1010,10116;
д) 1ABC,9D16.
5. Сложите числа, а затем проверьте результаты, выполнив соответствующие десятичные сложения:
|
а) 10111012 и 11101112; |
д) 378 и 758; |
и) A16 и F16; |
|
б) 1011,1012 и 101,0112; |
е) 1658 и 378; |
к) 1916 и C16; |
|
в) 10112, 112 и 111,12; |
ж) 7,58 и 14,68; |
л) A,B16 и E,F16; |
|
г) 10112 , 11,12 и 1112; |
з) 68, 178 и 78; |
м) E16, 916 и F16. |
7. Запишите числа в прямом коде (формат 1 байт):
а)
31; б) -63; в)
65; г) -128.
III. Порядок выполнения, оформления отчета и защиты контрольной работы.
Контрольной работа выполняется студентами по индивидуальному заданию (варианту). Изменение варианта работы производится с разрешения преподавателя.
Результатом лабораторной работы является программа. Программа может быть разработана в одной из сред языков программирования: С, С++, Pascal. При этом каждое действие, происходящее в программе, комментируется его описанием. При работе над программой допускается пользоваться справочной литературой языка программирования.
Отчет по работе оформляется на листах формата А4 в соответствии с требованиями СТП. В содержание отчета в обязательном порядке должны войти следующие разделы:
1. Теоретическая часть – содержит теоретическое описание решение задачи, строго соответствующее полученному варианту. Например, вариант содержит задание: перевести десятичное число в двоичную систему счисления. Тогда в теоретическом описании должна быть представлена методика перевода десятичных чисел в двоичную систему счисления.
2. Описание программы – содержит описание порядка работы над программой и порядок работы самой программы. В описании работы программы обязательно включаются обоснования используемых приемов программирования, действия программных операторов, назначения и вызовы процедур и функций, правила передачи управления и т.д.
3. Листинг программы (или диск с исходным кодом программы) – содержит полную работающую версию программы с комментариями.
При защите полученных результатов программа демонстрируется.
IV. Материальное обеспечение.
Для выполнения лабораторной работы используются компьютеры класса Р-IV с установленным программным обеспечением: ОС – MS Windows, среда программирования – С, С++, Pascal.
V. Литература.
1. Юров В.И. Assembler. Учебник для вузов. 2-е изд. – СПб: Питер, 2004. – 637с.
2. Assembler: практикум / В. Юров – СПб: Питер, 2003. – 400с.