запишите дополнительный код десятичного числа 4249 в шестнадцатиразрядной ячейке памяти
Обратный и дополнительный коды двоичных чисел
Пример перевода
x1=10101-[x1]пр=010101
x2=-11101-[x2]пр=111101
x3=0,101-[x3]пр=0,101
x4=-0,111-[x4]пр=1,111
2) Обратный код числа, используется для выполнения арифметических операций вычитания, умножения, деления, через сложение. Обратный код положительного числа совпадает с его прямым кодом, обратный код отрицательного числа формируется по правилам: в знаковом разряде записывается “1”; цифровые значения меняются на противоположные.
3) Дополнительный код числа, имеет такое же назначение, как и обратный код числа. Формируется по следующим правилам: положительные числа в дополнительном коде выглядят также как и в обратном и в прямом коде, т.е. не изменяются. Отрицательные числа кодируются следующим образом: к обратному коду отрицательного числа (к младшему разряду) добавляется 1, по правилу двоичной арифметики.
Пример перевода
x1=10101-[x1]доп=010101
x2=-11101-[x2]обр=100010+1-[x2]доп=100011
x3=0,101-[x3]доп=0,101
x4=-0,111-[x4]обр=1,000+1-[x4]доп=1,001
Для выявления ошибок при выполнении арифметических операций используются также модифицированные коды: модифицированный прямой; модифицированный обратный; модифицированный дополнительный, для которых под код знака числа отводится два разряда, т.е. “+”=00; ”-”=11. Если в результате выполнения операции в знаковом разряде появляется комбинация 10 или 01 то для машины это признак ошибки, если 00 или 11 то результат верный.
Прямой, дополнительный и обратный коды
Прямой, дополнительный и обратный код числа (создан по запросу).
Далее идет калькулятор, который переводит введенное положительное или отрицательное целое число в двоичный код, а также выводит обратный код этого числа и его дополнительный код. Под калькулятором, как водится, немного теории.
Обновление: Из комментариев становится ясно, что люди не вполне понимают, что делает этот калькулятор. Точнее, что делал — применял алгоритм вычисления дополнительного кода к любому числу. Люди хотят, чтобы он им просто показывал дополнительный код числа. Ну хорошо — теперь при вводе положительного числа калькулятор показывает представление числа в двоичной форме, ибо для него нет обратного и дополнительного кода, а при вводе отрицательного показывает дополнительный и обратный код.
Прямой, дополнительный и обратный код
Прямой код числа это представление беззнакового двоичного числа. Если речь идет о машинной арифметике, то как правило на представление числа отводится определенное ограниченное число разрядов. Диапазон чисел, который можно представить числом разрядов n равен
Обратный код числа, или дополнение до единицы (one’s complement) это инвертирование прямого кода (поэтому его еще называют инверсный код). То есть все нули заменяются на единицы, а единицы на нули.
Дополнительный код числа, или дополнение до двойки (two’s complement) это обратный код, к младшему значащему разряду которого прибавлена единица
А теперь «зачем, зачем это все?» ©
Для различия положительных и отрицательных чисел выделяют старший разряд числа, который называется знаковым (sign bit)
0 в этом разряде говорит нам о том, что это положительное число, а 1 — отрицательное.
С положительными числами все вроде бы понятно, для их представления можно использовать прямой код
0 — 0000
1 — 0001
7 — 0111
А как представить отрицательные числа?
И это оказалось очень удобно для машинных вычислений — при таком представлении отрицательного числа операции сложения и вычитания можно реализовать одной схемой сложения, при этом очень легко определять переполнение результата (когда для представления получившегося числа не хватает разрядности)
Пара примеров
7-3=4
0111 прямой код 7
1101 дополнительный код 3
0100 результат сложения 4
-1+7=6
1111 дополнительный код 1
0111 прямой код 7
0110 результат сложения 6
Что касается переполнения — оно определяется по двум последним переносам, включая перенос за старший разряд. При этом если переносы 11 или 00, то переполнения не было, а если 01 или 10, то было. При этом, если переполнения не было, то выход за разряды можно игнорировать.
Примеры где показаны переносы и пятый разряд
00111 прямой код 7
00001 прямой код 1
01110 переносы
01000 результат 8 — переполнение
Два последних переноса 01 — переполнение
-7+7=0
00111 прямой код 7
01001 дополнительный код 7
11110 переносы
10000 результат 16 — но пятый разряд можно игнорировать, реальный результат 0
Два последних переноса 11 з перенос в пятый разряд можно отбросить, оставшийся результат, ноль, арифметически корректен.
Опять же проверять на переполнение можно простейшей операцией XOR двух бит переносов.
Вот благодаря таким удобным свойствам дополнительный код это самый распространенный способ представления отрицательных чисел в машинной арифметике.
Запишите дополнительный код десятичного числа 4249 в шестнадцатиразрядной ячейке памяти
— получаем прямой код модуля отрицательного числа;
— заменяем ноль, стоящий в старшем разряде на единицу.
Для решения возникающей проблемы решили для представления отрицательных чисел использовать не прямой, а так называемый дополнительный код.
1) Представить прямым кодом в k двоичных разрядах модуль отрицательного числа.
2) Инвертировать значения всех бит полученного прямого кода, т.е. заменить, все нули на единицы, а все единицы на нули в прямом коде модуля числа. Таким образом, получим обратный код исходного числа.
3) К полученному обратному коду прибавить единицу, таким образом получить дополнительный код исходного отрицательного числа.
1) получаем прямой код модуля числа в 16-ти разрядном представлении:
2) инвертируем прямой код в обратный:
3) К полученному обратному коду прибавляем единицу:
Другой, немаловажной особенностью применения дополнительного кода отрицательного числа в вычислительных машинах является значительное упрощение операции сложения чисел с разными знаками, которая сводится к поразрядному сложению этих чисел.
Если операцию сложения проводить с прямыми кодами чисел, то прежде всего пришлось бы проверять знаки чисел и в этом случае возникают два возможных варианта выполнения этой операции.
Если числа имеют одинаковые знаки, то вычисляется сумма этих чисел и сумме присваивается тот же знак.
Если числа имеют разные знаки, то из модуля большего числа вычитается модуль меньшего числа и сумме присваивается знак числа с большим модулем. В этом случае простейшая операция сложения реализуется через достаточно сложный алгоритм, который подразумевает не только сложение чисел.
Рассмотрим еще один пример вычислительной операции сложения с использованием дополнительного кода.
Ø Найдем обратный код тройки проинвертировав прямой код числа:
Прямой, обратный и дополнительный коды двоичного числа
Прямой код двоичного числа
Обратный код двоичного числа
Дополнительный код двоичного числа
Мы знаем, что десятичное число можно представить в двоичном виде. К примеру, десятичное число 100 в двоичном виде будет равно 1100100, или в восьмибитном представлении 0110 0100. А как представить отрицательное десятичное число в двоичном виде и произвести с ним арифметические операции? Для этого и предназначены разные способы представления чисел в двоичном коде.
Сразу отмечу, что положительные числа в двоичном коде вне зависимости от способа представления (прямой, обратный или дополнительный коды) имеют одинаковый вид.
Прямой код
Обратный код
Для неотрицательных чисел обратный код двоичного числа имеет тот же вид, что и запись неотрицательного числа в прямом коде.
Для отрицательных чисел обратный код получается из неотрицательного числа в прямом коде, путем инвертирования всех битов (1 меняем на 0, а 0 меняем на 1).
Для преобразования отрицательного числа записанное в обратном коде в положительное достаточного его проинвертировать.
Арифметические операции с отрицательными числами в обратном коде:
Дополнительный код
В дополнительном коде (как и в прямом и обратном) старший разряд отводится для представления знака числа (знаковый бит).
Арифметические операции с отрицательными числами в дополнительном коде
Вывод:
1. Для арифметических операций сложения и вычитания положительных двоичных чисел наиболее подходит применение прямого кода
2. Для арифметических операций сложения и вычитания отрицательных двоичных чисел наиболее подходит применение дополнительного кода
(34 голосов, оценка: 4,68 из 5)
Прямой, обратный и дополнительный код находим аналогично.
-1000
100010=2 9 +2 8 +2 7 +2 6 + 2 5 +2 3 =512+256+128+64+32+8 =1111101000
Прямой, обратный и дополнительный код находим аналогично.
-10000
Так как 2 16 =65536, а 2 15 =32768, 2 14 =16384, то в разложении числа 10000 наивысшая степень двойки число 13.
1000010=2 13 +2 10 +2 9 +2 8 + 2 4 =8192+1024+512+256+16 =10011100010000
Ответ:
Десятичные числа | Прямой код | Обратный код | Дополнительный код |
-10 | 0000000000001010 | 1111111111110101 | 1111111111110110 |
-100 | 0000000001100100 | 1111111110011011 | 1111111110011100 |
-1000 | 0000001111101000 | 1111110000010111 | 1111110000011000 |
-10000 | 0010011100010000 | 1101100011101111 | 1101100011110000 |
Примечание: перевод чисел можно проделать в калькуляторе.
13. Записать в двоичной и 16-ричной форме внутреннее представление наибольшего положительного целого и наибольшего по абсолютной величине отрицательного целого числа, представленных в 1-байтовой ячейке памяти. ([1], стр.136, №50)
Решение:
2. Наибольшее по абсолютной величине отрицательное целое число, представленное в 1-байтовой ячейке памяти число 12810 =1000 00002 =80 16
Ответ: 011111112 =7F16 и 1000 00002 =80 16
14. Записать в двоичной и шестнадцатиричной форме внутреннее представление наибольшего положительного целого и наибольшего по абсолютной величине отрицательного целого числа, представленных в 2-х байтовой ячейке памяти. ([1], стр.137, №51)
Решение:
Ответ: 7FFF16, 8000 16
15. Получить десятичное представление числа по его дополнительному коду 100101112
Решение:
1.) Инвертируем дополнительный код 100101112.
Получим 01101000 – обратный код
2) Прибавим к полученному числу 1. Получим число 01101001
3) Переведем полученную запись числа из двоичной в 10-ю форму. Получим число 105.
4) Перед полученным числом поставим знак «-»
Получить дополнительный код десятичного числа – 105.
Решение:
1)Модуль числа записать в прямом коде в n двоичных разрядах.
2) Получить обратный код числа. Получим 10010110
3) К полученному обратному коду прибавить 1. Получим 10010111
Ответ: дополнительный код числа –105 равен 10010111
Уровень «5»
Используются алгоритмы №1, 2, 3.
Решение:
Представим положительное число в прямом, а отрицательное число в дополнительном коде:
Десятичное число | Прямой код | Обратный код | Дополнительный код |
3000 | 0000101110111000 | ||
-5000 | 0001001110001000 | 1110110001110111 | 1110110001110111 + 0000000000000001 1110110001111000 |
Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде:
3000-5000 | 1111100000110000 |
Переведем полученный дополнительный код в десятичное число, воспользуемся алгоритмом №3:
1) Инвертируем дополнительный код: 0000011111001111
2) Прибавим к полученному коду 1 и получим модуль отрицательного числа:
0000011111010000
Ответ: 0000011111010000
Назовите достоинства и недостатки представления чисел в формате с фиксированной запятой.
Решение:
Достоинства:
· Наглядность представления чисел
· Благодаря использованию дополнительного кода вычитание сводится к сложению, что упрощает алгоритм реализации арифметических операций.
Недостатки:
Конечный диапазон представления величин недостаточен для решения математических, физических, экономических и других задач, где используются очень малые и очень большие числа.
Решение:
1. Представим положительное число в прямом, а отрицательное число в дополнительном коде:
Десятичное число | Прямой код | Обратный код | Дополнительный код |
20 | 0000000000010100 | ||
-60 | 0000000000111100 | 1111111111000011 | 1111111111000011 |
2. Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде:
20-60 | 1111111111011000 |
3. Проверка: Переведем полученный дополнительный код в десятичное число:
1) Инвертируем дополнительный код: 0000000000100111
2) Прибавим к полученному коду 1 и получим модуль отрицательного числа:
Дата добавления: 2018-08-06 ; просмотров: 302 ; Мы поможем в написании вашей работы!
- С чем сделать макароны ребенку в год
- 0xc1900101 0x2000c код ошибки windows как поступить в данной ситуации